Repository: zeppelin Updated Branches: refs/heads/master 346981b67 -> 7af4fab42
ZEPPELIN-3136. IPython Code Completion Improvement ### What is this PR for? This is for better code completion support for IPythonInterpreter ### What type of PR is it? [Improvement ] ### Todos * [ ] - Task ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-3136 ### How should this be tested? * Unit test is updated and Manually verified. ### Screenshots (if appropriate) ![code_completion](https://user-images.githubusercontent.com/164491/34858941-3f28105a-f78e-11e7-8341-2fbfd306ba5b.gif) ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: Jeff Zhang <zjf...@apache.org> Closes #2725 from zjffdu/ZEPPELIN-3136 and squashes the following commits: 1179fc8 [Jeff Zhang] ZPEPELIN-3136. IPython Code Completion Improvement Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/7af4fab4 Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/7af4fab4 Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/7af4fab4 Branch: refs/heads/master Commit: 7af4fab420ed42edbe9f97c1c4d63823ff321c2d Parents: 346981b Author: Jeff Zhang <zjf...@apache.org> Authored: Fri Jan 12 11:45:16 2018 +0800 Committer: Jeff Zhang <zjf...@apache.org> Committed: Sat Jan 13 16:14:55 2018 +0800 ---------------------------------------------------------------------- .../org/apache/zeppelin/python/IPythonInterpreter.java | 9 +++++++-- .../apache/zeppelin/python/IPythonInterpreterTest.java | 10 +++++----- .../apache/zeppelin/spark/IPySparkInterpreterTest.java | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zeppelin/blob/7af4fab4/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java index 2184c1f..5ae03f0 100644 --- a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java +++ b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java @@ -336,14 +336,19 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand @Override public List<InterpreterCompletion> completion(String buf, int cursor, InterpreterContext interpreterContext) { + LOGGER.debug("Call completion for: " + buf); List<InterpreterCompletion> completions = new ArrayList<>(); CompletionResponse response = ipythonClient.complete( CompletionRequest.getDefaultInstance().newBuilder().setCode(buf) .setCursor(cursor).build()); for (int i = 0; i < response.getMatchesCount(); i++) { - completions.add(new InterpreterCompletion( - response.getMatches(i), response.getMatches(i), "")); + String match = response.getMatches(i); + int lastIndexOfDot = match.lastIndexOf("."); + if (lastIndexOfDot != -1) { + match = match.substring(lastIndexOfDot + 1); + } + completions.add(new InterpreterCompletion(match, match, "")); } return completions; } http://git-wip-us.apache.org/repos/asf/zeppelin/blob/7af4fab4/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java ---------------------------------------------------------------------- diff --git a/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java index 6451aa3..d89ddac 100644 --- a/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java +++ b/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java @@ -196,9 +196,9 @@ public class IPythonInterpreterTest { context = getInterpreterContext(); completions = interpreter.completion("sys.std", 7, context); assertEquals(3, completions.size()); - assertEquals("sys.stderr", completions.get(0).getValue()); - assertEquals("sys.stdin", completions.get(1).getValue()); - assertEquals("sys.stdout", completions.get(2).getValue()); + assertEquals("stderr", completions.get(0).getValue()); + assertEquals("stdin", completions.get(1).getValue()); + assertEquals("stdout", completions.get(2).getValue()); // there's no completion for 'a.' because it is not recognized by compiler for now. context = getInterpreterContext(); @@ -227,14 +227,14 @@ public class IPythonInterpreterTest { st = "a.co"; completions = interpreter.completion(st, st.length(), context); assertEquals(1, completions.size()); - assertEquals("a.count", completions.get(0).getValue()); + assertEquals("count", completions.get(0).getValue()); // cursor is in the middle of code context = getInterpreterContext(); st = "a.co\b='hello"; completions = interpreter.completion(st, 4, context); assertEquals(1, completions.size()); - assertEquals("a.count", completions.get(0).getValue()); + assertEquals("count", completions.get(0).getValue()); // ipython help context = getInterpreterContext(); http://git-wip-us.apache.org/repos/asf/zeppelin/blob/7af4fab4/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java ---------------------------------------------------------------------- diff --git a/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java b/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java index 5492274..d2b01ce 100644 --- a/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java +++ b/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java @@ -162,7 +162,7 @@ public class IPySparkInterpreterTest { // completions List<InterpreterCompletion> completions = iPySparkInterpreter.completion("sc.ran", 6, getInterpreterContext()); assertEquals(1, completions.size()); - assertEquals("sc.range", completions.get(0).getValue()); + assertEquals("range", completions.get(0).getValue()); // pyspark streaming context = getInterpreterContext();