|
| 1 | +# Positron Python Extension |
| 2 | + |
| 3 | +The Python Extension to the [Positron IDE](https://github.com/rstudio/positron). |
| 4 | + |
| 5 | +You can read more about Positron IDE development on the [Positron Wiki](https://connect.rstudioservices.com/positron-wiki). |
| 6 | + |
| 7 | +## About |
| 8 | + |
| 9 | +The extension is a fork of [Microsoft's Python VSCode extension](https://github.com/microsoft/vscode-python). The main TypeScript functionality (mostly UI) is implemented in [`src`](../src) and calls out to Python scripts in [`pythonFiles`](../pythonFiles). |
| 10 | + |
| 11 | +We provide a custom Positron Python Kernel based on the following open source Python projects: |
| 12 | + |
| 13 | +- [**IPyKernel**](https://github.com/ipython/ipykernel), a Jupyter kernel for the Python programming language written in Python |
| 14 | +- [**Jedi Language Server**](https://github.com/pappasam/jedi-language-server), a language server built on the [pygls](https://github.com/openlawlibrary/pygls) (Python Generic Language Server Framework) using the [Jedi](https://github.com/davidhalter/jedi) library for autocompletion, static analysis, and refactoring |
| 15 | + |
| 16 | +The entrypoint to our kernel is the [`positron_language_server.py`](../pythonFiles/positron_language_server.py) script. The core functionality of the kernel can be found in the [`positron`](../pythonFiles/positron/) package, which consists of these services: |
| 17 | + |
| 18 | +- [`positron_ipkernel`](../pythonFiles/positron/positron_ipkernel.py), the Positron Python Kernel |
| 19 | +- [`positron_jedilsp`](../pythonFiles/positron/positron_jedilsp.py), the Positron Python Language Server |
| 20 | +- [`environment`](../pythonFiles/positron/environment.py), manages Positron's Environment pane |
| 21 | +- [`lsp`](../pythonFiles/positron/lsp.py), manages the language server |
| 22 | +- [`plots`](../pythonFiles/positron/plots.py), a custom [IPython display publisher](https://github.com/ipython/ipython/blob/main/IPython/core/displaypub.py) that displays to Positron's Plots pane |
| 23 | +- [`dataviewer`](../pythonFiles/positron/dataviewer.py), manages Positron's Data Viewer |
| 24 | + |
| 25 | +The `environment`, `lsp`, `plots`, and `dataviewer` services communicate with the `positron_ipkernel` via Jupyter's [comms](https://connect.rstudioservices.com/content/59a1f153-dcd8-44ac-849b-3371829b7002/positron-architecture.html#comms-and-ui-bindings) messaging protocol. |
0 commit comments