def wrapped(self, *args, **kwargs): guid = self._generate_uuid() self._spark_events.emit_magic_execution_start_event(f.__name__, get_livy_kind(self.language), guid) try: result = f(self, *args, **kwargs) except Exception as e: self._spark_events.emit_magic_execution_end_event(f.__name__, get_livy_kind(self.language), guid, False, e.__class__.__name__, str(e)) raise else: self._spark_events.emit_magic_execution_end_event(f.__name__, get_livy_kind(self.language), guid, True, u"", u"") return result
def _experimental_do_complete(self, code, cursor_pos): """ Experimental completions from IPython, using livy completion. """ code = code.strip() if cursor_pos is None: cursor_pos = len(code) matches = [] with provisionalcompleter(): session_name = self.spark_controller.generate_livy_session_name(id(self)) endpoint = build_endpoint(self.session_language) session_info_list = self.spark_controller.get_all_sessions_endpoint(endpoint) session_id = None for session in session_info_list: if session.session_name == session_name: session_id = session.id if session_id: # Only complete the cursor_line cursor_line, cursor_column = position_to_cursor(code, cursor_pos) lines = code.split("\n") completion_line = lines[cursor_line] before_lines = lines[:cursor_line] if len(lines) > 1 and cursor_line > 0: real_cursor_pos = cursor_pos - len("\n".join(before_lines)) - 1 else: real_cursor_pos = cursor_pos http_client = self.spark_controller._http_client(endpoint) kind = conf.get_livy_kind(self.session_language) res_completions = http_client.post_completion(session_id, kind, completion_line, real_cursor_pos) matches = res_completions.get("candidates", []) if matches: s = self.__get_cursor_start(code, cursor_pos, matches[0]) else: s = cursor_pos res = { 'matches': matches, 'cursor_end': cursor_pos, 'cursor_start': s, 'metadata': {}, 'status': 'ok' } return res
def test_get_livy_kind_covers_all_langs(): for lang in LANGS_SUPPORTED: get_livy_kind(lang)