Source code for circuitpython_kernel.install
# -*- coding: utf-8 -*-
"""Kernelspec installation."""
import getopt
import json
import os
import sys
from IPython.utils.tempdir import TemporaryDirectory
from jupyter_client.kernelspec import KernelSpecManager
kernel_json = {
"argv": ["python", "-m", "circuitpython_kernel", "-f", "{connection_file}"],
"display_name": "CircuitPython",
"mimetype": "text/x-python",
"language": "python",
"name": "circuitpython",
}
[docs]def install_my_kernel_spec(user=True, prefix=None):
"""Install circuitpython kernel to list of kernels."""
with TemporaryDirectory() as temp_dir:
os.chmod(temp_dir, 0o755) # Starts off as 700, not user readable
with open(os.path.join(temp_dir, 'kernel.json'), 'w') as f:
json.dump(kernel_json, f, sort_keys=True)
print('Installing CircuitPython kernelspec')
KernelSpecManager().install_kernel_spec(
temp_dir, 'circuitpython', user=user, replace=True, prefix=prefix
)
print('Completed kernel installation.')
def _is_root():
try:
return os.geteuid() == 0
except AttributeError:
return False # assume not an admin on non-Unix platforms
[docs]def main(argv=None):
if argv is None:
argv = []
prefix = None
user = not _is_root()
opts, _ = getopt.getopt(argv[1:], '', ['user', 'prefix='])
for k, v in opts:
if k == '--user':
user = True
elif k == '--prefix':
prefix = v
user = False
install_my_kernel_spec(user=user, prefix=prefix)
if __name__ == '__main__':
main(argv=sys.argv)