evhub / coconut

Simple, elegant, Pythonic functional programming.
http://coconut-lang.org
Apache License 2.0
4.05k stars 120 forks source link

Coconut equivalent of `ipykernel install` #765

Closed rtbs-dev closed 1 year ago

rtbs-dev commented 1 year ago

Hi there! I've moved away from nb_conda_kernels due to... so many conflicting dependencies and CI/CD nightmares. But the pip install coconut[kernel] technique still works great for this workflow, which makes use of pyenv/virtualenv. Jupyter/lab can find the kernel just fine, provided a small kernel.json config file. I figured out how to add it in a way that duplicates those workflows.

Proposal

Request: add a coconut kernel install [--name] [--user] cli command

functionality: creates a ~/.local/share/jupyter/kernels/{myenv}-coconut/kernel.json spec file, with the contents:

{
 "argv": [
  "${PYENV_ROOT}/versions/{myenv}/bin/python",
  "-m",
  "coconut.icoconut",
  "-f",
  "{connection_file}"
 ],
 "display_name": "{myenv}-coconut",
 "language": "coconut"
}

Where the {PYENV_ROOT} and {myenv} variables get replaced with the pyenv root dir and currently-activate environment name, respectively.

For now I just copy+edit that file around to new kernel folders every time I make one that uses Coconut, but that would be easier if there was a coconut equivalent to the python -m ipykernel install --user --name {myenv} command that I run for python kernels that makes the kernel.json automatically.

Assumptions: The user wants a coconut kernel to have the same name as the python environment it's originating from, but with an added -coconut in the name. Seemed good enough?

evhub commented 1 year ago

Theoretically, coconut --jupyter should do approximately this. Let me know if that works for you or if you are still having any issues.

evhub commented 1 year ago

I guess the one thing coconut --jupyter doesn't support currently is --user installation. Perhaps coconut --jupyter --user or coconut --jupyter install --user should be supported for that.

evhub commented 1 year ago

In addition to the already-supported coconut --jupyter command, coconut --jupyter install and coconut --jupyter install --user should now be supported on coconut-develop>=3.0.2-post_dev14 (pip uninstall coconut and pip install -U coconut-develop).

rtbs-dev commented 1 year ago

Oh phenomenal! I didn't realize the coconut --jupyter command was available if only coconut[kernel] was installed, or that it would automatically recognize the correct pyenv. But imo I really like the coconut --jupyter install syntax! Thanks again!