c6af9e284a
Tests / catch-all (windows-latest) (push) Has been cancelled
Tests / jvm (macos-latest) (push) Has been cancelled
Tests / jvm (ubuntu-latest) (push) Has been cancelled
Tests / jvm (windows-latest) (push) Has been cancelled
Tests / native (macos-latest) (push) Has been cancelled
Tests / native (ubuntu-latest) (push) Has been cancelled
Tests / native (windows-latest) (push) Has been cancelled
Tests / niche (ubuntu-latest) (push) Has been cancelled
Tests / other-langs (macos-latest) (push) Has been cancelled
Tests / other-langs (ubuntu-latest) (push) Has been cancelled
Tests / other-langs (windows-latest) (push) Has been cancelled
Tests / catch-all (macos-latest) (push) Has been cancelled
Tests / catch-all (ubuntu-latest) (push) Has been cancelled
Docs Build / build (push) Has been cancelled
Docs Build / deploy (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Codespell / Check for spelling errors (push) Has been cancelled
Build and Push Docker Images / build-and-push (push) Has been cancelled
57 lines
2.0 KiB
Markdown
57 lines
2.0 KiB
Markdown
# Contributing to Serena
|
|
|
|
Thank you for your interest in contributing to Serena!
|
|
|
|
## Scope of Contributions
|
|
|
|
The following types of contributions can be submitted directly via pull requests:
|
|
* isolated additions which do not change the behaviour of Serena and only extend it along existing lines (e.g., adding support for a new language server)
|
|
* small bug fixes
|
|
* documentation improvements
|
|
|
|
For other changes, please open an issue first to discuss your ideas with the maintainers.
|
|
|
|
When submitting a PR, ensure a well-defined scope.
|
|
Every PR should cover a single logical change or a set of closely related changes.
|
|
|
|
### Adding Support for a New Language Server
|
|
|
|
See the corresponding [memory](.serena/memories/adding_new_language_support_guide.md).
|
|
|
|
## Submitting Pull Requests
|
|
|
|
Before submitting a PR, be sure to document your relevant changes (i.e. new features, fixes) in `CHANGELOG.md`.
|
|
Use a concise style and add your change to the appropriate section
|
|
("Language Servers", "Tools", "JetBrains", "CLI", "Memories", "Dashboard", "Hooks", "General").
|
|
|
|
## Python Environment Setup
|
|
|
|
You can install a virtual environment with the required as follows
|
|
|
|
1. Create a new virtual environment: `uv venv -p 3.13`
|
|
2. Activate the environment:
|
|
* On Linux/Unix/macOS or Windows with Git Bash: `source .venv/bin/activate`
|
|
* On Windows outside of Git Bash: `.venv\Scripts\activate.bat` (in cmd/ps) or `source .venv/Scripts/activate` (in git-bash)
|
|
3. Install the required packages with all extras: `uv sync --extra dev`
|
|
|
|
## Local Installation as Tool
|
|
|
|
To install Serena as a local tool, run
|
|
|
|
```shell
|
|
uv tool install --reinstall -p 3.13 .
|
|
```
|
|
|
|
## Poe Tasks
|
|
|
|
We use poe to execute development tasks:
|
|
|
|
- `poe format` - run code auto-formatters
|
|
- `poe type-check` - run type checkers
|
|
|
|
## Testing Tool Executions
|
|
|
|
The Serena tools (and in fact all Serena code) can be executed without an LLM, and also without
|
|
any MCP specifics (though you can use the mcp inspector, if you want).
|
|
|
|
An example script for running tools is provided in [scripts/demo_run_tools.py](scripts/demo_run_tools.py). |