Skip to content

Commit 96c3ba0

Browse files
authored
Merge pull request #159 from RibomBalt/master
2 parents 1bc5c76 + f5ffd70 commit 96c3ba0

File tree

5 files changed

+44
-9
lines changed

5 files changed

+44
-9
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ build/
55
dist/
66
*.pyc
77
.*.swp
8+
matlab_kernel/matlab/
9+
matlab_kernel/matlab_connect/

MANIFEST.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
include versioneer.py
22
include matlab_kernel/_version.py
3-
include matlab_kernel/kernel.json
3+
include matlab_kernel/kernel_template.json
44
recursive-include matlab_kernel *.png

matlab_kernel/kernel.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class MatlabExecutionError(Exception):
2828

2929
from . import __version__
3030

31-
31+
IS_CONNECT = "connect-to-existing-kernel" in os.environ.keys()
3232
class _PseudoStream:
3333

3434
def __init__(self, writer):
@@ -39,9 +39,10 @@ def get_kernel_json():
3939
"""Get the kernel json for the kernel.
4040
"""
4141
here = os.path.dirname(__file__)
42-
with open(os.path.join(here, 'kernel.json')) as fid:
42+
kernel_name = 'matlab_connect' if IS_CONNECT else 'matlab'
43+
with open(os.path.join(here, kernel_name ,'kernel.json')) as fid:
4344
data = json.load(fid)
44-
data['argv'][0] = sys.executable
45+
# data['argv'][0] = sys.executable
4546
return data
4647

4748

@@ -79,10 +80,16 @@ def _matlab(self):
7980
Matlab engine not installed:
8081
See https://www.mathworks.com/help/matlab/matlab-engine-for-python.htm
8182
""")
82-
try:
83-
self.__matlab = matlab.engine.start_matlab()
84-
except matlab.engine.EngineError:
85-
self.__matlab = matlab.engine.connect_matlab()
83+
if IS_CONNECT:
84+
try:
85+
self.__matlab = matlab.engine.connect_matlab()
86+
except matlab.engine.EngineError:
87+
self.__matlab = matlab.engine.start_matlab()
88+
else:
89+
try:
90+
self.__matlab = matlab.engine.start_matlab()
91+
except matlab.engine.EngineError:
92+
self.__matlab = matlab.engine.connect_matlab()
8693
# detecting the correct kwargs for async running
8794
# matlab 'async' param is deprecated since it became a keyword in python 3.7
8895
# instead, 'background' param is available and recommended since Matlab R2017b
File renamed without changes.

setup.py

+27-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import glob
2+
import json
3+
import os
4+
import sys
25
from setuptools import setup, find_packages
36

47
with open('matlab_kernel/__init__.py', 'rb') as fid:
@@ -9,12 +12,35 @@
912
break
1013

1114
DISTNAME = 'matlab_kernel'
15+
16+
# generating kernel.json for both kernels
17+
os.makedirs(os.path.join(DISTNAME, 'matlab'), exist_ok=True)
18+
with open(os.path.join(DISTNAME, 'kernel_template.json'), 'r') as fp:
19+
matlab_json = json.load(fp)
20+
matlab_json['argv'][0] = sys.executable
21+
with open(os.path.join(DISTNAME, 'matlab','kernel.json'), 'w') as fp:
22+
json.dump(matlab_json, fp)
23+
24+
os.makedirs(os.path.join(DISTNAME, 'matlab_connect'), exist_ok=True)
25+
with open(os.path.join(DISTNAME, 'kernel_template.json'), 'r') as fp:
26+
matlab_json = json.load(fp)
27+
matlab_json['argv'][0] = sys.executable
28+
matlab_json['display_name'] = 'Matlab (Connection)'
29+
matlab_json['name'] = "matlab_connect"
30+
matlab_json['env'] = {'connect-to-existing-kernel': '1'}
31+
with open(os.path.join(DISTNAME, 'matlab_connect','kernel.json'), 'w') as fp:
32+
json.dump(matlab_json, fp)
33+
1234
PACKAGE_DATA = {
1335
DISTNAME: ['*.m'] + glob.glob('%s/**/*.*' % DISTNAME)
1436
}
1537
DATA_FILES = [
1638
('share/jupyter/kernels/matlab', [
17-
'%s/kernel.json' % DISTNAME
39+
'%s/matlab/kernel.json' % DISTNAME
40+
] + glob.glob('%s/images/*.png' % DISTNAME)
41+
),
42+
('share/jupyter/kernels/matlab_connect', [
43+
'%s/matlab_connect/kernel.json' % DISTNAME
1844
] + glob.glob('%s/images/*.png' % DISTNAME)
1945
)
2046
]

0 commit comments

Comments
 (0)