示例#1
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testCD(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="%cd ..")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="print(os.getcwd())")
         stdout, stderr = assemble_output(iopub)
         self.assertTrue(stdout.strip().endswith('jupyter'))
         self.assertEqual(stderr, '')
         msg_id, content = execute(kc=kc, code="%cd test")
示例#2
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testWith(self):
     '''Test magic with'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         msg_id, content = execute(kc=kc, code='var = [1, 2, 3, 4]')
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code='%with R -i var -o m\nm=mean(var)')
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%dict m")
         res = get_result(iopub)
         self.assertEqual(res['m'], 2.5)
示例#3
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testSetSigil(self):
     '''Test set_options of sigil'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         msg_id, content = execute(kc=kc, code='%set_options sigil=None')
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code='a="${}".format(100)')
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%dict a")
         res = get_result(iopub)
         self.assertEqual(res['a'], "$100")
示例#4
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testSubKernel(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="%use R")
         stdout, stderr = assemble_output(iopub)
         self.assertEqual(stderr, '')
         msg_id, content = execute(kc=kc, code="a <- 1024")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 1024')
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
示例#5
0
 def testHelp(self):
     '''Test help messages'''
     with sos_kernel() as kc:
         # create a data frame
         execute(kc=kc,
                 code='\n'.join(
                     '%{} -h'.format(magic)
                     for magic in ('cd', 'debug', 'dict', 'get',
                                   'matplotlib', 'paste', 'preview', 'put',
                                   'render', 'rerun', 'run', 'save',
                                   'sandbox', 'set', 'sessioninfo',
                                   'sosrun', 'sossave', 'shutdown',
                                   'taskinfo', 'tasks', 'toc', 'use',
                                   'with', 'pull', 'push')))
         wait_for_idle(kc)
示例#6
0
    def testDAG(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code='''
%run
[a]
b=10

[default]
sos_run('a')
''')
            wait_for_idle(kc)
            execute(kc=kc, code="b")
            res = get_result(iopub)
            self.assertEqual(res, 10)
示例#7
0
 def testPullPush(self):
     '''Test set_options of sigil'''
     import random
     fname = os.path.expanduser("~/push_pull_{}.txt".format(random.randint(1, 100000)))
     with open(fname, 'w') as pp:
         pp.write('something')
     with sos_kernel() as kc:
         # create a data frame
         execute(kc=kc, code='%push {} --to docker -c ~/docker.yml'.format(fname))
         wait_for_idle(kc)
         os.remove(fname)
         self.assertFalse(os.path.isfile(fname))
         #
         execute(kc=kc, code='%pull {} --from docker -c ~/docker.yml'.format(fname))
         _, stderr = get_std_output(kc.iopub_channel)
         self.assertEqual(stderr, '', 'Expect no error, get {}'.format(stderr))
         self.assertTrue(os.path.isfile(fname))
示例#8
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testMagicDict(self):
     '''Test %dict magic'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="a=12345")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%dict a")
         self.assertEqual(get_result(iopub)['a'], 12345)
         msg_id, content = execute(kc=kc, code="%dict --keys")
         self.assertTrue('a' in get_result(iopub))
         msg_id, content = execute(kc=kc, code="%dict --reset")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%dict --keys --all")
         res = get_result(iopub)
         self.assertTrue('a' not in res)
         for key in ('run', 'sh', 'tcsh', 'expand_pattern'):
             self.assertTrue(key in res)
示例#9
0
    def testGetPythonDataFromRuby(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code='''
null_var = None
num_var = 123
import numpy
import pandas
num_arr_var = numpy.array([1, 2, 3])
logic_var = True
logic_arr_var = [True, False, True]
char_var = '1"23'
char_arr_var = ['1', '2', '3']
list_var = [1, 2, '3']
dict_var = dict(a=1, b=2, c='3')
set_var = {1, 2, '3'}
mat_var = numpy.matrix([[1,2],[3,4]])
recursive_var = {'a': {'b': 123}, 'c': True}
comp_var = 1+2j
''')
            wait_for_idle(kc)
            execute(kc=kc, code='''
%use Ruby
%get null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var set_var list_var dict_var mat_var recursive_var comp_var
%dict -r
%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var set_var list_var dict_var mat_var recursive_var comp_var
%use sos
''')
            wait_for_idle(kc)
            execute(kc=kc, code='''
%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var set_var list_var dict_var mat_var recursive_var comp_var
''')
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(res['num_arr_var'], [1,2,3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, False, True])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
            self.assertEqual(res['set_var'], {1, 2, '3'})
            self.assertEqual(res['list_var'], [1,2,'3'])
            self.assertEqual(res['dict_var'], {'a': 1, 'b': 2, 'c': '3'})
            self.assertEqual(res['mat_var'].shape, (2, 2))
            self.assertEqual(res['recursive_var'],  {'a': {'b': 123}, 'c': True})
            self.assertEqual(res['comp_var'], (1+2j))
示例#10
0
 def testMagicDict(self):
     '''Test %dict magic'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         execute(kc=kc, code="a=12345")
         wait_for_idle(kc)
         execute(kc=kc, code="%dict a")
         self.assertEqual(get_result(iopub)['a'], 12345)
         execute(kc=kc, code="%dict --keys")
         self.assertTrue('a' in get_result(iopub))
         execute(kc=kc, code="%dict --reset")
         wait_for_idle(kc)
         execute(kc=kc, code="%dict --keys --all")
         res = get_result(iopub)
         self.assertTrue('a' not in res)
         for key in ('run', 'expand_pattern'):
             self.assertTrue(key in res)
示例#11
0
    def testMagicPreview(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            #
            execute(kc=kc, code='''
%preview mtcars
%use R
''')
            wait_for_idle(kc)
            execute(kc=kc, code='''%use sos''')
            wait_for_idle(kc)
            # preview figure
            execute(kc=kc,
                    code='''\
%preview -n a.png
R:
    png('a.png')
    plot(0)
    dev.off()
''')
            res = get_display_data(iopub, 'image/png')
            self.assertGreater(len(res), 1000, 'Expect a image {}'.format(res))
            # preview jpg
            execute(kc=kc,
                    code='''\
%preview a.jp*
R:
    jpeg('a.jpg')
    plot(0)
    dev.off()
''')
            res = get_display_data(iopub, 'image/jpeg')
            self.assertGreater(len(res), 1000, 'Expect a image {}'.format(res))
            # preview pdf in iframe (by default)
            execute(kc=kc,
                    code='''
%preview a.pdf
R:
    pdf('a.pdf')
    plot(0)
    dev.off()
''')
            # or png (which requires imagemagick
            wait_for_idle(kc)
            execute(kc=kc, code='''\
%preview a.pdf -s png
''')
            # could return html or image depending on configuration
            res = get_display_data(iopub, ('text/html', 'image/png'))
            self.assertTrue('iframe' in res or len(res) > 1000,
                            'Expect a image {}'.format(res))
            #
            # switch back
            execute(kc=kc, code='%use SoS')
            wait_for_idle(kc)
示例#12
0
 def testIsComplete(self):
     with sos_kernel() as kc:
         # match magics
         status = is_complete(kc, "prin")
         self.assertEqual(status["status"], "incomplete")
         #
         status = is_complete(kc, "a=1")
         self.assertEqual(status["status"], "incomplete")
         #
         status = is_complete(kc, "")
         self.assertEqual(status["status"], "complete")
         #
         status = is_complete(kc, "input:\n a=1,")
         self.assertEqual(status["status"], "incomplete")
         #
         status = is_complete(kc, "%dict -r")
         self.assertEqual(status["status"], "complete")
         wait_for_idle(kc)
 def testIsComplete(self):
     with sos_kernel() as kc:
         # match magics
         status = is_complete(kc, 'prin')
         self.assertEqual(status['status'], 'incomplete')
         #
         status = is_complete(kc, 'a=1')
         self.assertEqual(status['status'], 'incomplete')
         #
         status = is_complete(kc, '')
         self.assertEqual(status['status'], 'complete')
         #
         status = is_complete(kc, 'input:\n a=1,')
         self.assertEqual(status['status'], 'incomplete')
         #
         status = is_complete(kc, '%dict -r')
         self.assertEqual(status['status'], 'complete')
         wait_for_idle(kc)
示例#14
0
 def testCompleter(self):
     with sos_kernel() as kc:
         # match magics
         self.assertTrue('%get ' in get_completions(kc, '%g')['matches'])
         self.assertTrue('%get ' in get_completions(kc, '%')['matches'])
         self.assertTrue('%with ' in get_completions(kc, '%w')['matches'])
         # path complete
         self.assertGreater(len(get_completions(kc, '!ls ')['matches']), 0)
         self.assertEqual(
             len(get_completions(kc, '!ls SOMETHING')['matches']), 0)
         #
         wait_for_idle(kc)
         # variable complete
         execute(kc=kc, code='alpha=5')
         wait_for_idle(kc)
         execute(kc=kc, code='%use Python3')
         wait_for_idle(kc)
         self.assertTrue('alpha' in get_completions(kc, 'al')['matches'])
         self.assertTrue('all(' in get_completions(kc, 'al')['matches'])
         # for no match
         self.assertEqual(
             len(get_completions(kc, 'alphabetatheta')['matches']), 0)
         # get with all variables in
         self.assertTrue('alpha' in get_completions(kc, '%get ')['matches'])
         self.assertTrue(
             'alpha' in get_completions(kc, '%get al')['matches'])
         # with use and restart has kernel name
         self.assertTrue(
             'Python3' in get_completions(kc, '%with ')['matches'])
         self.assertTrue(
             'Python3' in get_completions(kc, '%use ')['matches'])
         self.assertTrue(
             'Python3' in get_completions(kc, '%shutdown ')['matches'])
         self.assertTrue(
             'Python3' in get_completions(kc, '%shutdown ')['matches'])
         self.assertTrue(
             'Python3' in get_completions(kc, '%use Py')['matches'])
         #
         self.assertEqual(len(get_completions(kc, '%use SOME')['matches']),
                          0)
         #
         wait_for_idle(kc)
         execute(kc=kc, code='%use SoS')
         wait_for_idle(kc)
示例#15
0
 def testInspector(self):
     with sos_kernel() as kc:
         # match magics
         self.assertTrue("%get " in get_completions(kc, "%g")["matches"])
         self.assertTrue("%get " in get_completions(kc, "%")["matches"])
         self.assertTrue("%with " in get_completions(kc, "%w")["matches"])
         # path complete
         self.assertGreater(len(get_completions(kc, "!ls ")["matches"]), 0)
         self.assertEqual(
             len(get_completions(kc, "!ls SOMETHING")["matches"]), 0)
         #
         wait_for_idle(kc)
         # variable complete
         execute(kc=kc, code="alpha=5")
         wait_for_idle(kc)
         execute(kc=kc, code="%use Python3")
         wait_for_idle(kc)
         self.assertTrue("alpha" in get_completions(kc, "al")["matches"])
         self.assertTrue("all(" in get_completions(kc, "al")["matches"])
         # for no match
         self.assertEqual(
             len(get_completions(kc, "alphabetatheta")["matches"]), 0)
         # get with all variables in
         self.assertTrue("alpha" in get_completions(kc, "%get ")["matches"])
         self.assertTrue(
             "alpha" in get_completions(kc, "%get al")["matches"])
         # with use and restart has kernel name
         self.assertTrue(
             "Python3" in get_completions(kc, "%with ")["matches"])
         self.assertTrue(
             "Python3" in get_completions(kc, "%use ")["matches"])
         self.assertTrue(
             "Python3" in get_completions(kc, "%shutdown ")["matches"])
         self.assertTrue(
             "Python3" in get_completions(kc, "%shutdown ")["matches"])
         self.assertTrue(
             "Python3" in get_completions(kc, "%use Py")["matches"])
         #
         self.assertEqual(len(get_completions(kc, "%use SOME")["matches"]),
                          0)
         #
         wait_for_idle(kc)
         execute(kc=kc, code="%use SoS")
         wait_for_idle(kc)
示例#16
0
 def testPutRDataFrameToPython(self):
     # R -> Python
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         execute(kc=kc, code='%use R')
         wait_for_idle(kc)
         execute(kc=kc, code="%put mtcars")
         assemble_output(iopub)
         # the message can contain "Loading required package feathre"
         #self.assertEqual(stderr, '')
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         execute(kc=kc, code="mtcars.shape")
         res = get_result(iopub)
         self.assertEqual(res, (32, 11))
         execute(kc=kc, code="mtcars.index[0]")
         res = get_result(iopub)
         self.assertEqual(res, 'Mazda RX4')
示例#17
0
    def testRerun(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code='''\
%run
parameter: a=10

[default]
b = a
''')
            wait_for_idle(kc)
            #
            execute(kc=kc, code='''\
%rerun --a 20
''')
            wait_for_idle(kc)
            execute(kc=kc, code="b")
            res = get_result(iopub)
            self.assertEqual(res, 20)
示例#18
0
 def testAutoSharedVars(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         execute(kc=kc, code="sos_null = None")
         wait_for_idle(kc)
         execute(kc=kc, code="sos_num = 123")
         wait_for_idle(kc)
         execute(kc=kc, code="%use R")
         wait_for_idle(kc)
         execute(kc=kc, code="sos_num")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 123')
         execute(kc=kc, code="sos_num = sos_num + 10")
         wait_for_idle(kc)
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         execute(kc=kc, code="sos_num")
         res = get_display_data(iopub)
         self.assertEqual(res, '133')
示例#19
0
    def testGetPythonDataFrameFromMatlab(self):
        # Python -> Matlab/Matlab
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc,
                    code='''
import pandas as pd
import numpy as np
import scipy.io as sio
arr = np.random.randn(1000)
arr[::10] = np.nan
df = pd.DataFrame({'column_{0}'.format(i): arr for i in range(10)})
''')
            clear_channels(iopub)
            execute(kc=kc, code="%use MATLAB")
            wait_for_idle(kc)
            #_, stderr = assemble_output(iopub)
            #self.assertEqual(stderr, '')
            execute(kc=kc, code="%get df")
            wait_for_idle(kc)
            execute(kc=kc, code="display(size(df))")
            stdout, _ = assemble_output(iopub)
            self.assertEqual(stdout.strip().split(), ['1000', '10'])
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#20
0
 def testMagicUse(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         execute(kc=kc, code="%use R0 -l sos_r.kernel:sos_R -c #CCCCCC")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc,
                 code="%use R1 -l sos_r.kernel:sos_R -k ir -c #CCCCCC")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc, code="%use R2 -k ir")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc, code="a <- 1024")
         wait_for_idle(kc)
         execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 1024')
         execute(kc=kc, code="%use R3 -k ir -l R")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc, code="a <- 233")
         wait_for_idle(kc)
         execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 233')
         execute(kc=kc, code="%use R2 -c red")
         _, stderr = get_std_output(iopub)
         self.assertEqual(stderr, '')
         execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 1024')
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
示例#21
0
文件: test_kernel.py 项目: BoPeng/SOS
    def testGetPythonDataFrameFromR(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            msg_id, content = execute(kc=kc, code='''
import pandas as pd
import numpy as np
arr = np.random.randn(1000) 
arr[::10] = np.nan
df = pd.DataFrame({'column_{0}'.format(i): arr for i in range(10)})
''')
            clear_channels(iopub)
            msg_id, content = execute(kc=kc, code="%use R")
            stdout, stderr = assemble_output(iopub)
            self.assertEqual(stderr, '')
            msg_id, content = execute(kc=kc, code="%get df")
            wait_for_idle(kc)
            msg_id, content = execute(kc=kc, code="dim(df)")
            res = get_display_data(iopub)
            self.assertEqual(res, '[1] 1000   10')
            msg_id, content = execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#22
0
    def testIsComplete(self):
        with sos_kernel() as kc:
            # match magics
            status = is_complete(kc, "prin")
            self.assertEqual(status["status"], "complete")
            #
            status = is_complete(kc, "a=1")
            self.assertEqual(status["status"], "complete")
            #
            status = is_complete(kc, "")
            self.assertEqual(status["status"], "complete")
            # the status seems to be version dependent on ipython
            #status = is_complete(kc, "input:\n a=1,")
            #self.assertEqual(status["status"], "complete")
            #
            #status = is_complete(kc, "parameter: a=1,")
            #self.assertEqual(status["status"], "complete")
            #
            status = is_complete(kc, "%dict -r")
            self.assertEqual(status["status"], "complete")

            wait_for_idle(kc)
示例#23
0
    def testMagicCapture(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # preview variable
            execute(kc=kc, code='''
%capture --to res
print('kkk')
''')
            wait_for_idle(kc)
            execute(kc=kc, code='''
res
''')
            stdout, _ = get_std_output(iopub)
            # FIXME: Not sure why this test does not work
            #self.assertTrue('kkk' in stdout, 'Got stdout "{}"'.format(stdout))
            execute(kc=kc,
                    code=r'''
%capture --as csv --to res
print('a,b\nc,d')
''')
            _, stderr = get_std_output(iopub)
            self.assertEqual(stderr, '', f"Get error {stderr}")
            #
            execute(kc=kc,
                    code=r'''
%capture --as tsv --to res
print('a\tb\nc\td')
''')
            _, stderr = get_std_output(iopub)
            self.assertEqual(stderr, '', f"Get error {stderr}")
            #
            execute(kc=kc,
                    code=r'''
%capture --as json --to res
print('[1,2,3]')
''')
            _, stderr = get_std_output(iopub)
            self.assertEqual(stderr, '', f"Get error {stderr}")
示例#24
0
文件: test_kernel.py 项目: mr-c/SOS
    def testGetPythonDataFrameFromR(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            msg_id, content = execute(kc=kc,
                                      code='''
import pandas as pd
import numpy as np
arr = np.random.randn(1000) 
arr[::10] = np.nan
df = pd.DataFrame({'column_{0}'.format(i): arr for i in range(10)})
''')
            clear_channels(iopub)
            msg_id, content = execute(kc=kc, code="%use R")
            stdout, stderr = assemble_output(iopub)
            self.assertEqual(stderr, '')
            msg_id, content = execute(kc=kc, code="%get df")
            wait_for_idle(kc)
            msg_id, content = execute(kc=kc, code="dim(df)")
            res = get_display_data(iopub)
            self.assertEqual(res, '[1] 1000   10')
            msg_id, content = execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#25
0
文件: test_kernel.py 项目: mr-c/SOS
 def testMagicGet(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="a = 1025")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="_b_a = 22")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%use R")
         stdout, stderr = assemble_output(iopub)
         self.assertEqual(stderr, '')
         msg_id, content = execute(kc=kc, code="%get a")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 1025')
         #
         msg_id, content = execute(kc=kc, code="%get _b_a")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code=".b_a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 22')
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
示例#26
0
    def testMagicShutdown(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code='''
%use R
a = 100
cat(a)
''')
            stdout, stderr = get_std_output(iopub)
            self.assertTrue(stdout.endswith('100'),
                            'Should have output {}'.format(stdout))
            #self.assertEqual(stderr, '')
            #now let us restart
            execute(kc=kc, code='''
%shutdown --restart R
%use R
cat(a)
''')
            stdout, _ = get_std_output(iopub)
            # not sure what is going on
            self.assertEqual(stdout, '')
            execute(kc=kc, code='%use SoS')
            wait_for_idle(kc)
示例#27
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testMagicGet(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="a = 1025")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="_b_a = 22")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%use R")
         stdout, stderr = assemble_output(iopub)
         self.assertEqual(stderr, '')
         msg_id, content = execute(kc=kc, code="%get a")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 1025')
         #
         msg_id, content = execute(kc=kc, code="%get _b_a")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code=".b_a")
         res = get_display_data(iopub)
         self.assertEqual(res, '[1] 22')
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
示例#28
0
    def testReverseSharedVariable(self):
        '''Test shared variables defined in auxiliary steps'''
        file_target('a.txt').remove('both')
        script = r'''
%run B
[A: shared='b', provides='a.txt']
b = 1
run:
    touch a.txt

[B_1]
depends: 'a.txt'

[B_2]
print(b)

'''
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code=script)
            wait_for_idle(kc)
            execute(kc=kc, code="b")
            res = get_result(iopub)
            self.assertEqual(res, 1)
示例#29
0
    def testPutRDataToPython(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc,
                    code="""\
%use R
null_var = NULL
num_var = 123
num_arr_var = c(1, 2, 3)
logic_var = TRUE
logic_arr_var = c(TRUE, FALSE, TRUE)
char_var = '1\"23'
char_arr_var = c(1, 2, '3')
list_var = list(1, 2, '3')
named_list_var = list(a=1, b=2, c='3')
mat_var = matrix(c(1,2,3,4), nrow=2)
recursive_var = list(a=1, b=list(c=3, d='whatever'))
comp_var = 1+2i
seri_var = setNames(c(1,2,3,3,3,3),c(0:5))
""")
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''\
%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var list_var named_list_var recursive_var comp_var seri_var
%use sos
seri_var = list(seri_var)
''')
            wait_for_idle(kc)
            execute(
                kc=kc,
                code=
                "%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var list_var named_list_var recursive_var comp_var seri_var"
            )
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(res['num_arr_var'], [1, 2, 3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, False, True])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
            self.assertEqual(res['list_var'], [1, 2, '3'])
            self.assertEqual(res['named_list_var'], {'a': 1, 'b': 2, 'c': '3'})
            self.assertEqual(res['mat_var'].shape, (2, 2))
            self.assertEqual(res['recursive_var'], {
                'a': 1,
                'b': {
                    'c': 3,
                    'd': 'whatever'
                }
            })
            self.assertEqual(res['comp_var'], 1 + 2j)
            self.assertEqual(res['seri_var'], [1, 2, 3, 3, 3, 3])
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#30
0
    def testPutRubyDataToPython(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc, code="""\
%use Ruby
null_var = nil
num_var = 123
num_arr_var = [1, 2, 3]
logic_var = true
logic_arr_var = [true, true, false]
char_arr_var = [1, 2, "3"]
char_var = '1"23'
mat_var = N[[1, 2], [3, 4]]
recursive_var = {"a"=>1, "b"=>{"c"=>3}, "d"=>"whatever"}
comp_var = Complex(1,2)
single_char_var = 'a'
""")
            wait_for_idle(kc)
            execute(kc=kc, code="%put null_var num_var num_arr_var logic_var logic_arr_var char_arr_var char_var mat_var recursive_var comp_var single_char_var")
            wait_for_idle(kc)
            execute(kc=kc, code="%use sos")
#            wait_for_idle(kc)
#            execute(kc=kc, code='''
#%use sos
#named_list_var = list(named_list_var)
#''')
            wait_for_idle(kc)
            execute(kc=kc, code="%dict null_var num_var num_arr_var logic_var logic_arr_var char_arr_var char_var mat_var recursive_var comp_var single_char_var")
            res = get_result(iopub)
            self.assertEqual(res['null_var'], None)
            self.assertEqual(res['num_var'], 123)
            self.assertEqual(list(res['num_arr_var']), [1,2,3])
            self.assertEqual(res['logic_var'], True)
            self.assertEqual(res['logic_arr_var'], [True, True, False])
            self.assertEqual(res['char_var'], '1"23')
            self.assertEqual(res['char_arr_var'], [1, 2, '3'])
            self.assertEqual(res['mat_var'].shape, (2,2))
            self.assertEqual(res['recursive_var'], {'a': 1, 'b': {'c': 3}, 'd': 'whatever'})
            self.assertEqual(res['comp_var'], 1+2j)
            self.assertEqual(res['single_char_var'], 'a')
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#31
0
    def testAutoSharedVars(self):
        '''Test the sharing of variables automatically'''
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc, code="""\
sos_null = None
sos_num = 123
""")
            wait_for_idle(kc)
            execute(kc=kc, code="%use Python3")
            wait_for_idle(kc)
            execute(kc=kc, code="sos_num")
            res = get_display_data(iopub)
            self.assertEqual(res, '123')
            execute(kc=kc, code="sos_num = sos_num + 10")
            wait_for_idle(kc)
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
            execute(kc=kc, code="sos_num")
            res = get_display_data(iopub)
            self.assertEqual(res, '133')
示例#32
0
 def testWith(self):
     '''Test magic with'''
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         execute(kc=kc, code='var = [1, 2, 3, 4]')
         wait_for_idle(kc)
         execute(kc=kc, code='%with R -i var -o m\nm=mean(var)')
         wait_for_idle(kc)
         execute(kc=kc, code="%dict m")
         res = get_result(iopub)
         self.assertEqual(res['m'], 2.5)
         execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
示例#33
0
    def testPythonToCppDataframe(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            execute(kc=kc,
                    code='''
                import numpy as np
                import pandas as pd
                dataframe = pd.DataFrame(np.random.randn(1000,4), columns=list('ABCD'))
                ''')

            wait_for_idle(kc)
            execute(kc=kc, code='%use C++14')
            wait_for_idle(kc)
            execute(kc=kc, code='%get dataframe')
            wait_for_idle(kc)

            execute(kc=kc, code='std::cout << dataframe.size();')
            stdout, _ = assemble_output(iopub)
            self.assertEqual(stdout.strip(), '4000')

            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#34
0
    def testJavaToPythonDataframe(self):
        with sos_kernel() as kc:
            iopub = kc.iopub_channel

            execute(kc=kc, code='%use Java')
            wait_for_idle(kc)
            execute(kc=kc,
                    code='''
                String[] animals = {"bear", "cat", "giraffe"};
                double[] cuteness = {90.1, 84.3, 99.7};
                Table cuteAnimals = Table.create("Cute Animals").addColumns(
                    StringColumn.create("Animal types", animals), DoubleColumn.create("rating", cuteness));     
                ''')
            wait_for_idle(kc)
            execute(kc=kc, code='%put cuteAnimals')
            wait_for_idle(kc)
            execute(kc=kc, code='%use sos')
            wait_for_idle(kc)

            execute(kc=kc, code='print(cuteAnimals["rating"][2])')
            stdout, _ = assemble_output(iopub)
            self.assertEqual(stdout.strip(), '99.7')
示例#35
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testPutRDataFrameToPython(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         msg_id, content = execute(kc=kc, code='%use R')
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%put mtcars")
         stdout, stderr = assemble_output(iopub)
         # the message can contain "Loading required package feathre"
         #self.assertEqual(stderr, '')
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="mtcars.shape")
         res = get_result(iopub)
         self.assertEqual(res, (32, 11))
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
示例#36
0
    def testGetPythonNoneFromRuby(self):
        # Python -> Ruby
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a data frame
            execute(kc=kc, code='''
null_var = None
''')
            clear_channels(iopub)
            execute(kc=kc, code="%use Ruby")
            wait_for_idle(kc)
            execute(kc=kc, code="%get null_var")
            wait_for_idle(kc)
            execute(kc=kc, code="null_var == nil")
            res = get_display_data(iopub)
            self.assertEqual(res, 'true')
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#37
0
    def testGetPythonMatrixFromRuby(self):
        # Python -> Ruby
        with sos_kernel() as kc:
            iopub = kc.iopub_channel
            # create a matrix 
            execute(kc=kc, code='''
import numpy as np
mat_var = np.matrix([[1,2],[3,4]])
''')
            clear_channels(iopub)
            execute(kc=kc, code="%use Ruby")
            wait_for_idle(kc)
            execute(kc=kc, code="%get mat_var")
            wait_for_idle(kc)
            execute(kc=kc, code="mat_var.size()")
            res = get_display_data(iopub)
            self.assertEqual(res, '4')
            execute(kc=kc, code="%use sos")
            wait_for_idle(kc)
示例#38
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testMagicPut(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="%use R")
         stdout, stderr = assemble_output(iopub)
         self.assertEqual(stderr, '')
         msg_id, content = execute(kc=kc, code="a <- 1024")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%put a")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%put __k_k")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="a")
         res = get_result(iopub)
         self.assertEqual(res, 1024)
         # strange name
         msg_id, content = execute(kc=kc, code="%use R")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code=".a.b <- 22")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%put .a.b")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="_a_b")
         res = get_result(iopub)
         self.assertEqual(res, 22)
示例#39
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testGetPythonDataFromR(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         msg_id, content = execute(kc=kc, code="null_var = None")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="num_var = 123")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="import numpy\nnum_arr_var = numpy.array([1, 2, 3])")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="logic_var = True")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="logic_arr_var = [True, False, True]")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="char_var = '123'")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="char_arr_var = ['1', '2', '3']")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="list_var = [1, 2, '3']")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="dict_var = dict(a=1, b=2, c='3')")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="set_var = {1, 2, '3'}")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="mat_var = numpy.matrix([[1,2],[3,4]])")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%use R")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%get null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var")
         wait_for_idle(kc)
         # need to test passed values
         # but let us cheat by passing data back
         msg_id, content = execute(kc=kc, code="%dict -r")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var set_var list_var dict_var")
         res = get_result(iopub)
         self.assertEqual(res['null_var'], None)
         self.assertEqual(res['num_var'], 123)
         self.assertEqual(res['num_arr_var'], [1,2,3])
         self.assertEqual(res['logic_var'], True)
         self.assertEqual(res['logic_arr_var'], [True, False, True])
         self.assertEqual(res['char_var'], '123')
         self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
         self.assertEqual(res['list_var'], [1,2,'3'])
         self.assertEqual(res['dict_var'], {'a': 1, 'b': 2, 'c': '3'})
         self.assertEqual(res['mat_var'].shape, (2,2))
示例#40
0
 def testMagicConnectInfo(self):
     '''Test connect info'''
     with sos_kernel() as kc:
         # create a data frame
         execute(kc=kc, code='%connectinfo')
         wait_for_idle(kc)
示例#41
0
文件: test_kernel.py 项目: BoPeng/SOS
 def testPutRDataToPython(self):
     with sos_kernel() as kc:
         iopub = kc.iopub_channel
         # create a data frame
         msg_id, content = execute(kc=kc, code='%use R')
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="null_var = NULL")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="num_var = 123")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="num_arr_var = c(1, 2, 3)")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="logic_var = TRUE")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="logic_arr_var = c(TRUE, FALSE, TRUE)")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="char_var = '123'")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="char_arr_var = c(1, 2, '3')")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="list_var = list(1, 2, '3')")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="named_list_var = list(a=1, b=2, c='3')")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="mat_var = matrix(c(1,2,3,4), nrow=2)")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%put null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var list_var named_list_var")
         wait_for_idle(kc)
         msg_id, content = execute(kc=kc, code="%dict null_var num_var num_arr_var logic_var logic_arr_var char_var char_arr_var mat_var list_var named_list_var")
         res = get_result(iopub)
         self.assertEqual(res['null_var'], None)
         self.assertEqual(res['num_var'], 123)
         self.assertEqual(res['num_arr_var'], [1,2,3])
         self.assertEqual(res['logic_var'], True)
         self.assertEqual(res['logic_arr_var'], [True, False, True])
         self.assertEqual(res['char_var'], '123')
         self.assertEqual(res['char_arr_var'], ['1', '2', '3'])
         self.assertEqual(res['list_var'], [1,2,'3'])
         self.assertEqual(res['named_list_var'], {'a': 1, 'b': 2, 'c': '3'})
         self.assertEqual(res['mat_var'].shape, (2,2))
         msg_id, content = execute(kc=kc, code="%use sos")
         wait_for_idle(kc)