mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
[ZEPPELIN-3163]. Fix checkstyle of python
This commit is contained in:
parent
bf4e1f93b2
commit
e89c411080
12 changed files with 247 additions and 206 deletions
|
|
@ -214,6 +214,13 @@
|
|||
<artifactId>maven-resources-plugin</artifactId>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>false</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
|
|
|||
|
|
@ -38,10 +38,8 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
|
|
@ -26,7 +26,6 @@ import org.apache.commons.exec.ExecuteWatchdog;
|
|||
import org.apache.commons.exec.LogOutputStream;
|
||||
import org.apache.commons.exec.PumpStreamHandler;
|
||||
import org.apache.commons.exec.environment.EnvironmentUtils;
|
||||
import org.apache.commons.httpclient.util.ExceptionUtil;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
|
@ -60,8 +59,6 @@ import java.io.InputStream;
|
|||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -157,7 +154,7 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand
|
|||
/**
|
||||
* non-empty return value mean the errors when checking ipython prerequisite.
|
||||
* empty value mean IPython prerequisite is meet.
|
||||
*
|
||||
*
|
||||
* @param pythonExec
|
||||
* @return
|
||||
*/
|
||||
|
|
@ -398,11 +395,11 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand
|
|||
LOGGER.warn("Exception happens in Python Process", e);
|
||||
}
|
||||
|
||||
private static class ProcessLogOutputStream extends LogOutputStream {
|
||||
static class ProcessLogOutputStream extends LogOutputStream {
|
||||
|
||||
private Logger logger;
|
||||
|
||||
public ProcessLogOutputStream(Logger logger) {
|
||||
ProcessLogOutputStream(Logger logger) {
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,31 +1,44 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.zeppelin.interpreter.*;
|
||||
import org.apache.zeppelin.interpreter.Interpreter;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContext;
|
||||
import org.apache.zeppelin.interpreter.InterpreterException;
|
||||
import org.apache.zeppelin.interpreter.InterpreterOutput;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult.Code;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult.Type;
|
||||
import org.apache.zeppelin.interpreter.LazyOpenInterpreter;
|
||||
import org.apache.zeppelin.scheduler.Scheduler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
|
@ -161,7 +174,7 @@ public class PythonCondaInterpreter extends Interpreter {
|
|||
PythonInterpreter python = null;
|
||||
Interpreter p =
|
||||
getInterpreterInTheSameSessionByClassName(PythonInterpreter.class.getName());
|
||||
return (PythonInterpreter) ((LazyOpenInterpreter)p).getInnerInterpreter();
|
||||
return (PythonInterpreter) ((LazyOpenInterpreter) p).getInnerInterpreter();
|
||||
}
|
||||
|
||||
public static String runCondaCommandForTextOutput(String title, List<String> commands)
|
||||
|
|
@ -410,7 +423,7 @@ public class PythonCondaInterpreter extends Interpreter {
|
|||
BufferedReader br = new BufferedReader(isr);
|
||||
String line = null;
|
||||
long startTime = System.currentTimeMillis();
|
||||
while ( (line = br.readLine()) != null) {
|
||||
while ((line = br.readLine()) != null) {
|
||||
output.append(line + "\n");
|
||||
// logging per 5 seconds
|
||||
if ((System.currentTimeMillis() - startTime) > 5000) {
|
||||
|
|
@ -428,7 +441,7 @@ public class PythonCondaInterpreter extends Interpreter {
|
|||
}
|
||||
}
|
||||
|
||||
public static String runCommand(String ... command)
|
||||
public static String runCommand(String... command)
|
||||
throws IOException, InterruptedException {
|
||||
|
||||
List<String> list = new ArrayList<>(command.length);
|
||||
|
|
|
|||
|
|
@ -1,27 +1,37 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
import org.apache.zeppelin.interpreter.*;
|
||||
import org.apache.zeppelin.interpreter.Interpreter;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContext;
|
||||
import org.apache.zeppelin.interpreter.InterpreterException;
|
||||
import org.apache.zeppelin.interpreter.InterpreterOutput;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult;
|
||||
import org.apache.zeppelin.interpreter.LazyOpenInterpreter;
|
||||
import org.apache.zeppelin.interpreter.WrappedInterpreter;
|
||||
import org.apache.zeppelin.scheduler.Scheduler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Properties;
|
||||
import java.util.regex.Matcher;
|
||||
|
|
|
|||
|
|
@ -47,11 +47,9 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import py4j.GatewayServer;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
|
|
@ -62,9 +60,9 @@ import java.util.Properties;
|
|||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* Interpreter for Python, it is the first implementation of interpreter for Python, so with less
|
||||
* features compared to IPythonInterpreter, but requires less prerequisites than
|
||||
* IPythonInterpreter, only python installation is required.
|
||||
* Interpreter for Python, it is the first implementation of interpreter for Python, so with less
|
||||
* features compared to IPythonInterpreter, but requires less prerequisites than
|
||||
* IPythonInterpreter, only python installation is required.
|
||||
*/
|
||||
public class PythonInterpreter extends Interpreter implements ExecuteResultHandler {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(PythonInterpreter.class);
|
||||
|
|
@ -141,7 +139,8 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
|
|||
InetAddress.getByName(serverAddress),
|
||||
GatewayServer.DEFAULT_CONNECT_TIMEOUT,
|
||||
GatewayServer.DEFAULT_READ_TIMEOUT,
|
||||
(List) null);;
|
||||
(List) null);
|
||||
;
|
||||
gatewayServer.start();
|
||||
LOGGER.info("Starting GatewayServer at " + serverAddress + ":" + port);
|
||||
|
||||
|
|
@ -367,6 +366,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
|
|||
try {
|
||||
statementFinishedNotifier.wait(1000);
|
||||
} catch (InterruptedException e) {
|
||||
// ignore this exception
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -522,7 +522,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
|
|||
}
|
||||
|
||||
List<InterpreterCompletion> results = new LinkedList<>();
|
||||
for (String name: completionList) {
|
||||
for (String name : completionList) {
|
||||
results.add(new InterpreterCompletion(name, name, StringUtils.EMPTY));
|
||||
}
|
||||
return results;
|
||||
|
|
@ -538,8 +538,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
|
|||
String completionScriptText = "";
|
||||
try {
|
||||
completionScriptText = text.substring(0, cursor);
|
||||
}
|
||||
catch (Exception e) {
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.toString());
|
||||
return null;
|
||||
}
|
||||
|
|
@ -558,13 +557,11 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
|
|||
|
||||
if (completionStartPosition == completionEndPosition) {
|
||||
completionStartPosition = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
completionStartPosition = completionEndPosition - completionStartPosition;
|
||||
}
|
||||
resultCompletionText = completionScriptText.substring(
|
||||
completionStartPosition , completionEndPosition);
|
||||
completionStartPosition, completionEndPosition);
|
||||
|
||||
return resultCompletionText;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,25 +1,22 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.zeppelin.interpreter.Interpreter;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContext;
|
||||
import org.apache.zeppelin.interpreter.InterpreterException;
|
||||
|
|
@ -29,9 +26,12 @@ import org.apache.zeppelin.interpreter.WrappedInterpreter;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* SQL over Pandas DataFrame interpreter for %python group
|
||||
*
|
||||
* <p>
|
||||
* Match experience of %sparpk.sql over Spark DataFrame
|
||||
*/
|
||||
public class PythonInterpreterPandasSql extends Interpreter {
|
||||
|
|
@ -90,7 +90,7 @@ public class PythonInterpreterPandasSql extends Interpreter {
|
|||
Interpreter python = getPythonInterpreter();
|
||||
|
||||
return python.interpret(
|
||||
"__zeppelin__.show(pysqldf('" + st + "'))\n__zeppelin__._displayhook()", context);
|
||||
"__zeppelin__.show(pysqldf('" + st + "'))\n__zeppelin__._displayhook()", context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
|
|
|
|||
|
|
@ -56,10 +56,12 @@ public abstract class BasePythonInterpreterTest {
|
|||
public void testPythonBasics() throws InterpreterException, InterruptedException, IOException {
|
||||
|
||||
InterpreterContext context = getInterpreterContext();
|
||||
InterpreterResult result = interpreter.interpret("import sys\nprint(sys.version[0])", context);
|
||||
InterpreterResult result =
|
||||
interpreter.interpret("import sys\nprint(sys.version[0])", context);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
Thread.sleep(100);
|
||||
List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
List<InterpreterResultMessage> interpreterResultMessages =
|
||||
context.out.toInterpreterResultMessage();
|
||||
assertEquals(1, interpreterResultMessages.size());
|
||||
|
||||
// single output without print
|
||||
|
|
@ -109,7 +111,7 @@ public abstract class BasePythonInterpreterTest {
|
|||
|
||||
// assignment
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("abc=1",context);
|
||||
result = interpreter.interpret("abc=1", context);
|
||||
Thread.sleep(100);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
|
|
@ -117,7 +119,8 @@ public abstract class BasePythonInterpreterTest {
|
|||
|
||||
// if block
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("if abc > 0:\n\tprint('True')\nelse:\n\tprint('False')", context);
|
||||
result =
|
||||
interpreter.interpret("if abc > 0:\n\tprint('True')\nelse:\n\tprint('False')", context);
|
||||
Thread.sleep(100);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
|
|
@ -141,7 +144,8 @@ public abstract class BasePythonInterpreterTest {
|
|||
if (interpreter instanceof IPythonInterpreter) {
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
assertEquals(1, interpreterResultMessages.size());
|
||||
assertTrue(interpreterResultMessages.get(0).getData().contains("name 'unknown' is not defined"));
|
||||
assertTrue(interpreterResultMessages.get(0).getData().contains(
|
||||
"name 'unknown' is not defined"));
|
||||
} else if (interpreter instanceof PythonInterpreter) {
|
||||
assertTrue(result.message().get(0).getData().contains("name 'unknown' is not defined"));
|
||||
}
|
||||
|
|
@ -163,14 +167,14 @@ public abstract class BasePythonInterpreterTest {
|
|||
context = getInterpreterContext();
|
||||
result = interpreter.interpret(
|
||||
"from __future__ import print_function\n" +
|
||||
"def greet(name):\n" +
|
||||
" print('Hello', name)\n" +
|
||||
"greet('Jack')", context);
|
||||
"def greet(name):\n" +
|
||||
" print('Hello', name)\n" +
|
||||
"greet('Jack')", context);
|
||||
Thread.sleep(100);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
assertEquals(1, interpreterResultMessages.size());
|
||||
assertEquals("Hello Jack\n",interpreterResultMessages.get(0).getData());
|
||||
assertEquals("Hello Jack\n", interpreterResultMessages.get(0).getData());
|
||||
|
||||
// ZEPPELIN-1114
|
||||
context = getInterpreterContext();
|
||||
|
|
@ -223,10 +227,12 @@ public abstract class BasePythonInterpreterTest {
|
|||
public void testZeppelinContext() throws InterpreterException, InterruptedException, IOException {
|
||||
// TextBox
|
||||
InterpreterContext context = getInterpreterContext();
|
||||
InterpreterResult result = interpreter.interpret("z.input(name='text_1', defaultValue='value_1')", context);
|
||||
InterpreterResult result =
|
||||
interpreter.interpret("z.input(name='text_1', defaultValue='value_1')", context);
|
||||
Thread.sleep(100);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
List<InterpreterResultMessage> interpreterResultMessages =
|
||||
context.out.toInterpreterResultMessage();
|
||||
assertTrue(interpreterResultMessages.get(0).getData().contains("'value_1'"));
|
||||
assertEquals(1, context.getGui().getForms().size());
|
||||
assertTrue(context.getGui().getForms().get("text_1") instanceof TextBox);
|
||||
|
|
@ -236,7 +242,8 @@ public abstract class BasePythonInterpreterTest {
|
|||
|
||||
// Select
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("z.select(name='select_1', options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context);
|
||||
result = interpreter.interpret("z.select(name='select_1'," +
|
||||
" options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
assertEquals(1, context.getGui().getForms().size());
|
||||
assertTrue(context.getGui().getForms().get("select_1") instanceof Select);
|
||||
|
|
@ -248,7 +255,8 @@ public abstract class BasePythonInterpreterTest {
|
|||
|
||||
// CheckBox
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("z.checkbox(name='checkbox_1', options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context);
|
||||
result = interpreter.interpret("z.checkbox(name='checkbox_1'," +
|
||||
"options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
assertEquals(1, context.getGui().getForms().size());
|
||||
assertTrue(context.getGui().getForms().get("checkbox_1") instanceof CheckBox);
|
||||
|
|
@ -260,7 +268,8 @@ public abstract class BasePythonInterpreterTest {
|
|||
|
||||
// Pandas DataFrame
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("import pandas as pd\ndf = pd.DataFrame({'id':[1,2,3], 'name':['a','b','c']})\nz.show(df)", context);
|
||||
result = interpreter.interpret("import pandas as pd\n" +
|
||||
"df = pd.DataFrame({'id':[1,2,3], 'name':['a','b','c']})\nz.show(df)", context);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
assertEquals(1, interpreterResultMessages.size());
|
||||
|
|
@ -268,18 +277,21 @@ public abstract class BasePythonInterpreterTest {
|
|||
assertEquals("id\tname\n1\ta\n2\tb\n3\tc\n", interpreterResultMessages.get(0).getData());
|
||||
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("import pandas as pd\ndf = pd.DataFrame({'id':[1,2,3,4], 'name':['a','b','c', 'd']})\nz.show(df)", context);
|
||||
result = interpreter.interpret("import pandas as pd\n" +
|
||||
"df = pd.DataFrame({'id':[1,2,3,4], 'name':['a','b','c', 'd']})\nz.show(df)", context);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
assertEquals(2, interpreterResultMessages.size());
|
||||
assertEquals(InterpreterResult.Type.TABLE, interpreterResultMessages.get(0).getType());
|
||||
assertEquals("id\tname\n1\ta\n2\tb\n3\tc\n", interpreterResultMessages.get(0).getData());
|
||||
assertEquals(InterpreterResult.Type.HTML, interpreterResultMessages.get(1).getType());
|
||||
assertEquals("<font color=red>Results are limited by 3.</font>\n", interpreterResultMessages.get(1).getData());
|
||||
assertEquals("<font color=red>Results are limited by 3.</font>\n",
|
||||
interpreterResultMessages.get(1).getData());
|
||||
|
||||
// z.show(matplotlib)
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("import matplotlib.pyplot as plt\ndata=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)\nz.show(plt)", context);
|
||||
result = interpreter.interpret("import matplotlib.pyplot as plt\n" +
|
||||
"data=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)\nz.show(plt)", context);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
assertEquals(1, interpreterResultMessages.size());
|
||||
|
|
@ -287,7 +299,8 @@ public abstract class BasePythonInterpreterTest {
|
|||
|
||||
// clear output
|
||||
context = getInterpreterContext();
|
||||
result = interpreter.interpret("import time\nprint(\"Hello\")\ntime.sleep(0.5)\nz.getInterpreterContext().out().clear()\nprint(\"world\")\n", context);
|
||||
result = interpreter.interpret("import time\nprint(\"Hello\")\n" +
|
||||
"time.sleep(0.5)\nz.getInterpreterContext().out().clear()\nprint(\"world\")\n", context);
|
||||
assertEquals("%text world\n", context.out.getCurrentOutput().toString());
|
||||
}
|
||||
|
||||
|
|
@ -297,11 +310,16 @@ public abstract class BasePythonInterpreterTest {
|
|||
String restoreCode = "z = __zeppelin__\n";
|
||||
String validCode = "z.input(\"test\")\n";
|
||||
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(validCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(redefinitionCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.ERROR, interpreter.interpret(validCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(restoreCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(validCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS,
|
||||
interpreter.interpret(validCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS,
|
||||
interpreter.interpret(redefinitionCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.ERROR,
|
||||
interpreter.interpret(validCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS,
|
||||
interpreter.interpret(restoreCode, getInterpreterContext()).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS,
|
||||
interpreter.interpret(validCode, getInterpreterContext()).code());
|
||||
}
|
||||
|
||||
protected InterpreterContext getInterpreterContext() {
|
||||
|
|
|
|||
|
|
@ -21,11 +21,9 @@ import org.apache.zeppelin.interpreter.Interpreter;
|
|||
import org.apache.zeppelin.interpreter.InterpreterContext;
|
||||
import org.apache.zeppelin.interpreter.InterpreterException;
|
||||
import org.apache.zeppelin.interpreter.InterpreterGroup;
|
||||
import org.apache.zeppelin.interpreter.InterpreterOutput;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResultMessage;
|
||||
import org.apache.zeppelin.interpreter.LazyOpenInterpreter;
|
||||
import org.apache.zeppelin.interpreter.remote.RemoteInterpreterEventClient;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -35,7 +33,6 @@ import java.util.Properties;
|
|||
|
||||
import static junit.framework.TestCase.assertTrue;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
|
||||
public class IPythonInterpreterTest extends BasePythonInterpreterTest {
|
||||
|
|
@ -69,13 +66,15 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testIPythonAdvancedFeatures() throws InterpreterException, InterruptedException, IOException {
|
||||
public void testIPythonAdvancedFeatures()
|
||||
throws InterpreterException, InterruptedException, IOException {
|
||||
// ipython help
|
||||
InterpreterContext context = getInterpreterContext();
|
||||
InterpreterResult result = interpreter.interpret("range?", context);
|
||||
Thread.sleep(100);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
List<InterpreterResultMessage> interpreterResultMessages =
|
||||
context.out.toInterpreterResultMessage();
|
||||
assertTrue(interpreterResultMessages.get(0).getData().contains("range(stop)"));
|
||||
|
||||
// timeit
|
||||
|
|
@ -114,10 +113,12 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest {
|
|||
public void testIPythonPlotting() throws InterpreterException, InterruptedException, IOException {
|
||||
// matplotlib
|
||||
InterpreterContext context = getInterpreterContext();
|
||||
InterpreterResult result = interpreter.interpret("%matplotlib inline\nimport matplotlib.pyplot as plt\ndata=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)", context);
|
||||
InterpreterResult result = interpreter.interpret("%matplotlib inline\n" +
|
||||
"import matplotlib.pyplot as plt\ndata=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)", context);
|
||||
Thread.sleep(100);
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
List<InterpreterResultMessage> interpreterResultMessages =
|
||||
context.out.toInterpreterResultMessage();
|
||||
// the order of IMAGE and TEXT is not determined
|
||||
// check there must be one IMAGE output
|
||||
boolean hasImageOutput = false;
|
||||
|
|
@ -203,13 +204,15 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest {
|
|||
startInterpreter(properties);
|
||||
|
||||
// to make this test can run under both python2 and python3
|
||||
InterpreterResult result = interpreter.interpret("from __future__ import print_function", getInterpreterContext());
|
||||
InterpreterResult result =
|
||||
interpreter.interpret("from __future__ import print_function", getInterpreterContext());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
|
||||
InterpreterContext context = getInterpreterContext();
|
||||
result = interpreter.interpret("print('1'*3000)", context);
|
||||
assertEquals(InterpreterResult.Code.ERROR, result.code());
|
||||
List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage();
|
||||
List<InterpreterResultMessage> interpreterResultMessages =
|
||||
context.out.toInterpreterResultMessage();
|
||||
assertEquals(1, interpreterResultMessages.size());
|
||||
assertTrue(interpreterResultMessages.get(0).getData().contains("exceeds maximum: 3000"));
|
||||
|
||||
|
|
@ -223,7 +226,8 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest {
|
|||
properties.setProperty("zeppelin.ipython.grpc.message_size", "5000");
|
||||
startInterpreter(properties);
|
||||
// to make this test can run under both python2 and python3
|
||||
result = interpreter.interpret("from __future__ import print_function", getInterpreterContext());
|
||||
result =
|
||||
interpreter.interpret("from __future__ import print_function", getInterpreterContext());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
|
||||
|
||||
context = getInterpreterContext();
|
||||
|
|
|
|||
|
|
@ -17,30 +17,26 @@
|
|||
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
import org.apache.zeppelin.display.AngularObjectRegistry;
|
||||
import org.apache.zeppelin.display.GUI;
|
||||
import org.apache.zeppelin.interpreter.Interpreter;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContext;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContextRunner;
|
||||
import org.apache.zeppelin.interpreter.InterpreterException;
|
||||
import org.apache.zeppelin.interpreter.InterpreterGroup;
|
||||
import org.apache.zeppelin.interpreter.InterpreterOutput;
|
||||
import org.apache.zeppelin.interpreter.InterpreterOutputListener;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResultMessageOutput;
|
||||
import org.apache.zeppelin.resource.LocalResourcePool;
|
||||
import org.apache.zeppelin.user.AuthenticationInfo;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotSame;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class PythonInterpreterMatplotlibTest implements InterpreterOutputListener {
|
||||
private InterpreterGroup intpGroup;
|
||||
|
|
@ -98,9 +94,12 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene
|
|||
ret = python.interpret("plt.plot([1, 2, 3])", context);
|
||||
ret = python.interpret("plt.show()", context);
|
||||
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Type.TEXT, out.getOutputAt(0).getType());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()), InterpreterResult.Type.HTML, out.getOutputAt(1).getType());
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()),
|
||||
InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()),
|
||||
InterpreterResult.Type.TEXT, out.getOutputAt(0).getType());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()),
|
||||
InterpreterResult.Type.HTML, out.getOutputAt(1).getType());
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("data:image/png;base64"));
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("<div>"));
|
||||
}
|
||||
|
|
@ -122,17 +121,18 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene
|
|||
// type to HTML.
|
||||
ret = python.interpret("plt.show()", context);
|
||||
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()),
|
||||
InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(0, ret.message().size());
|
||||
|
||||
// Now test that new plot is drawn. It should be identical to the
|
||||
// previous one.
|
||||
ret = python.interpret("plt.plot([1, 2, 3])", context);
|
||||
String msg1 = new String(out.getOutputAt(0).toByteArray());
|
||||
String msg1 = new String(out.getOutputAt(0).toByteArray());
|
||||
InterpreterResult.Type type1 = out.getOutputAt(0).getType();
|
||||
|
||||
ret2 = python.interpret("plt.show()", context);
|
||||
String msg2 = new String(out.getOutputAt(0).toByteArray());
|
||||
String msg2 = new String(out.getOutputAt(0).toByteArray());
|
||||
InterpreterResult.Type type2 = out.getOutputAt(0).getType();
|
||||
|
||||
assertEquals(msg1, msg2);
|
||||
|
|
@ -155,16 +155,16 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene
|
|||
// of FigureManager, causing show() to set the output
|
||||
// type to HTML even though the figure is inactive.
|
||||
ret = python.interpret("plt.show()", context);
|
||||
String msg1 = new String(out.getOutputAt(0).toByteArray());
|
||||
String msg1 = new String(out.getOutputAt(0).toByteArray());
|
||||
assertNotSame("", msg1);
|
||||
|
||||
// Now test that plot can be reshown if it is updated. It should be
|
||||
// different from the previous one because it will plot the same line
|
||||
// again but in a different color.
|
||||
ret = python.interpret("plt.plot([1, 2, 3])", context);
|
||||
msg1 = new String(out.getOutputAt(1).toByteArray());
|
||||
msg1 = new String(out.getOutputAt(1).toByteArray());
|
||||
ret2 = python.interpret("plt.show()", context);
|
||||
String msg2 = new String(out.getOutputAt(1).toByteArray());
|
||||
String msg2 = new String(out.getOutputAt(1).toByteArray());
|
||||
|
||||
assertNotSame(msg1, msg2);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,38 +1,23 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.zeppelin.python;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.zeppelin.display.AngularObjectRegistry;
|
||||
import org.apache.zeppelin.display.GUI;
|
||||
import org.apache.zeppelin.interpreter.Interpreter;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContext;
|
||||
import org.apache.zeppelin.interpreter.InterpreterContextRunner;
|
||||
import org.apache.zeppelin.interpreter.InterpreterException;
|
||||
import org.apache.zeppelin.interpreter.InterpreterGroup;
|
||||
import org.apache.zeppelin.interpreter.InterpreterOutput;
|
||||
|
|
@ -40,24 +25,30 @@ import org.apache.zeppelin.interpreter.InterpreterOutputListener;
|
|||
import org.apache.zeppelin.interpreter.InterpreterResult;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResult.Type;
|
||||
import org.apache.zeppelin.interpreter.InterpreterResultMessageOutput;
|
||||
import org.apache.zeppelin.resource.LocalResourcePool;
|
||||
import org.apache.zeppelin.user.AuthenticationInfo;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* In order for this test to work, test env must have installed:
|
||||
* <ol>
|
||||
* - <li>Python</li>
|
||||
* - <li>NumPy</li>
|
||||
* - <li>Pandas</li>
|
||||
* - <li>PandaSql</li>
|
||||
* - <li>Python</li>
|
||||
* - <li>NumPy</li>
|
||||
* - <li>Pandas</li>
|
||||
* - <li>PandaSql</li>
|
||||
* <ol>
|
||||
*
|
||||
* <p>
|
||||
* To run manually on such environment, use:
|
||||
* <code>
|
||||
* mvn -Dpython.test.exclude='' test -pl python -am
|
||||
* mvn -Dpython.test.exclude='' test -pl python -am
|
||||
* </code>
|
||||
*/
|
||||
public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener {
|
||||
|
|
@ -94,7 +85,6 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
|
|||
intpGroup.put("note", Arrays.asList(python, sql));
|
||||
|
||||
|
||||
|
||||
// to make sure python is running.
|
||||
InterpreterResult ret = python.interpret("\n", context);
|
||||
assertEquals(ret.message().toString(), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
|
|
@ -109,7 +99,8 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
|
|||
|
||||
@Test
|
||||
public void dependenciesAreInstalled() throws InterpreterException {
|
||||
InterpreterResult ret = python.interpret("import pandas\nimport pandasql\nimport numpy\n", context);
|
||||
InterpreterResult ret =
|
||||
python.interpret("import pandas\nimport pandasql\nimport numpy\n", context);
|
||||
assertEquals(ret.message().toString(), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +122,7 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
|
|||
ret = python.interpret("import pandas as pd", context);
|
||||
ret = python.interpret("import numpy as np", context);
|
||||
// DataFrame df2 \w test data
|
||||
ret = python.interpret("df2 = pd.DataFrame({ 'age' : np.array([33, 51, 51, 34]), "+
|
||||
ret = python.interpret("df2 = pd.DataFrame({ 'age' : np.array([33, 51, 51, 34]), " +
|
||||
"'name' : pd.Categorical(['moon','jobs','gates','park'])})", context);
|
||||
assertEquals(ret.message().toString(), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
|
||||
|
|
@ -139,12 +130,16 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
|
|||
ret = sql.interpret("select name, age from df2 where age < 40", context);
|
||||
|
||||
//then
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()), Type.TABLE, out.getOutputAt(1).getType());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()),
|
||||
InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()), Type.TABLE,
|
||||
out.getOutputAt(1).getType());
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).indexOf("moon\t33") > 0);
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).indexOf("park\t34") > 0);
|
||||
|
||||
assertEquals(InterpreterResult.Code.SUCCESS, sql.interpret("select case when name==\"aa\" then name else name end from df2", context).code());
|
||||
assertEquals(InterpreterResult.Code.SUCCESS,
|
||||
sql.interpret("select case when name==\"aa\" then name else name end from df2",
|
||||
context).code());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -173,8 +168,10 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
|
|||
ret = python.interpret("z.show(df1, show_index=True)", context);
|
||||
|
||||
// then
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()), Type.TABLE, out.getOutputAt(1).getType());
|
||||
assertEquals(new String(out.getOutputAt(0).toByteArray()),
|
||||
InterpreterResult.Code.SUCCESS, ret.code());
|
||||
assertEquals(new String(out.getOutputAt(1).toByteArray()),
|
||||
Type.TABLE, out.getOutputAt(1).getType());
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("index_name"));
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("nan"));
|
||||
assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("6.7"));
|
||||
|
|
@ -194,4 +191,4 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
|
|||
public void onUpdate(int index, InterpreterResultMessageOutput out) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue