mirror of
https://github.com/rendercv/rendercv.git
synced 2026-02-02 17:41:38 -05:00
130 lines
4.7 KiB
Markdown
130 lines
4.7 KiB
Markdown
# Developer Guide
|
||
|
||
All contributions to RenderCV are welcome!
|
||
|
||
The source code is thoroughly documented and well-commented, making it an enjoyable read and easy to understand. A detailed documentation of the source code is available in the [reference](../reference/index.md).
|
||
|
||
|
||
## Getting Started
|
||
|
||
There are two ways of developing RenderCV: locally or with GitHub Codespaces.
|
||
|
||
### Develop Locally
|
||
|
||
1. Ensure that you have Python version 3.10 or higher.
|
||
2. Install [Hatch](https://hatch.pypa.io/latest/), as it is the project manager for RenderCV. The installation guide for Hatch can be found [here](https://hatch.pypa.io/latest/install/#installation).
|
||
3. Clone the repository recursively (because TinyTeX is being used as a submodule) with the following command.
|
||
```bash
|
||
git clone --recursive https://github.com/rendercv/rendercv.git
|
||
```
|
||
4. Go to the `rendercv` directory.
|
||
```bash
|
||
cd rendercv
|
||
```
|
||
5. RenderCV uses three virtual environments:
|
||
- `default`: For the development and testing. It contains packages like [Ruff](https://github.com/astral-sh/ruff), [Black](https://github.com/psf/black), [pytest](https://github.com/pytest-dev/pytest) etc.
|
||
- `test`: It's the same as the `default` environment, but it's created with Python 3.10, 3.11, 3.12, and 3.13 for testing.
|
||
- `docs`: For building the documentation.
|
||
|
||
Create the virtual environments with the following commands.
|
||
|
||
```bash
|
||
hatch env create default
|
||
hatch env create test
|
||
hatch env create docs
|
||
```
|
||
|
||
6. To use the virtual environments, either
|
||
|
||
- Activate one of the virtual environments with one of the following commands.
|
||
```bash
|
||
hatch shell default
|
||
```
|
||
|
||
```bash
|
||
hatch shell docs
|
||
```
|
||
|
||
```bash
|
||
hatch shell test.py3.13
|
||
```
|
||
|
||
- Select one of the virtual environments in your Integrated Development Environment (IDE).
|
||
|
||
=== "Visual Studio Code"
|
||
|
||
- Press `Ctrl+Shift+P`.
|
||
- Type `Python: Select Interpreter`.
|
||
- Select one of the virtual environments created by Hatch.
|
||
|
||
=== "Other"
|
||
|
||
To be added.
|
||
|
||
### Develop with GitHub Codespaces
|
||
|
||
1. [Fork](https://github.com/rendercv/rendercv/fork) the repository.
|
||
2. Navigate to the forked repository.
|
||
3. Click the <> **Code** button, then click the **Codespaces** tab, and then click **Create codespace on main**.
|
||
|
||
Then, [Visual Studio Code for the Web](https://code.visualstudio.com/docs/editor/vscode-web) will be opened with a ready-to-use development environment.
|
||
|
||
This is done with [Development containers](https://containers.dev/), and the environment is defined in the [`.devcontainer/devcontainer.json`](https://github.com/rendercv/rendercv/blob/main/.devcontainer/devcontainer.json) file. Dev containers can also be run locally using various [supporting tools and editors](https://containers.dev/supporting).
|
||
|
||
## Available Commands
|
||
|
||
These commands are defined in the [`pyproject.toml`](https://github.com/rendercv/rendercv/blob/main/pyproject.toml) file.
|
||
|
||
- Format the code with [Black](https://github.com/psf/black) and [Ruff](https://github.com/astral-sh/ruff)
|
||
```bash
|
||
hatch run format
|
||
```
|
||
- Lint the code with [Ruff](https://github.com/astral-sh/ruff)
|
||
```bash
|
||
hatch run lint
|
||
```
|
||
- Run [pre-commit](https://pre-commit.com/)
|
||
```bash
|
||
hatch run precommit
|
||
```
|
||
- Check the types with [Pyright](https://github.com/RobertCraigie/pyright-python)
|
||
```bash
|
||
hatch run check-types
|
||
```
|
||
- Run the tests with Python 3.13
|
||
```bash
|
||
hatch run test
|
||
```
|
||
- Run the tests with Python 3.10, 3.11, 3.12, and 3.13
|
||
```bash
|
||
hatch run test:test
|
||
```
|
||
- Run the tests with Python 3.13 and generate a coverage report
|
||
```bash
|
||
hatch run test-and-report
|
||
```
|
||
- Start the development server for the documentation
|
||
```bash
|
||
hatch run docs:serve
|
||
```
|
||
- Build the documentation
|
||
```bash
|
||
hatch run docs:build
|
||
```
|
||
- Update [schema.json](https://github.com/rendercv/rendercv/blob/main/schema.json)
|
||
```bash
|
||
hatch run docs:update-schema
|
||
```
|
||
- Update [`examples`](https://github.com/rendercv/rendercv/tree/main/examples) folder
|
||
```bash
|
||
hatch run docs:update-examples
|
||
```
|
||
- Update figures of the entry types in the "[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)"
|
||
```bash
|
||
hatch run docs:update-entry-figures
|
||
```
|
||
|
||
## About [`pyproject.toml`](https://github.com/rendercv/rendercv/blob/main/pyproject.toml)
|
||
|
||
[`pyproject.toml`](https://github.com/rendercv/rendercv/blob/main/pyproject.toml) contains the metadata, dependencies, and tools required for the project. Please read through the file to understand the project's technical details.
|