4.4 KiB
Contribution
First of all, thank you for considering contributing to this project. It's people like you that make it a reality for the community. There are many ways to contribute, and we appreciate all of them.
This guide will help you get started with contributing to this project.
Fork The Repository
-
Fork the repository you want to contribute to by clicking the "Fork" button on the project page.
-
Clone the repository to your local machine using the following command:
git clone https://github.com/<YOUR-GITHUB-USERNAME>/DB-GPT
Please replace <YOUR-GITHUB-USERNAME>
with your GitHub username.
Create A New Development Environment
- Create a new virtual environment using the following command:
# Make sure python >= 3.10
conda create -n dbgpt_env python=3.10
conda activate dbgpt_env
- Change to the project directory using the following command:
cd DB-GPT
- Install uv package manager:
There are several ways to install uv:
Option 1: Using pipx (Recommended)
python -m pip install --upgrade pip
python -m pip install --upgrade pipx
python -m pipx ensurepath
pipx install uv
Option 2: Using curl (macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
Then verify uv installation:
uv --version
- Install the project and all dependencies using uv:
# This will install all packages and development dependencies
# it will take some minutes
uv sync --all-packages \
--extra "base" \
--extra "proxy_openai" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "dbgpts"
Note for users in China: If you encounter network issues, you can configure uv to use Chinese mirrors:
# Set environment variable for Tsinghua mirror
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
# Or add --index-url parameter to the sync command
uv sync --all-packages \
--extra "base" \
--extra "proxy_openai" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "dbgpts" \
--index-url=https://pypi.tuna.tsinghua.edu.cn/simple
- Install pre-commit hooks
uv run pre-commit install
Important Note: After using uv sync
, you should use uv run
to execute commands in the virtual environment, or you can activate the environment with:
# Activate the virtual environment
source .venv/bin/activate # On macOS/Linux
# or
.venv\Scripts\activate # On Windows
- Install
make
command Themake
command has been installed by default on most Unix-based systems. If you not have it, you can install it by searching on the internet.
New Branch And Make Changes
- Create a new branch for your changes using the following command:
git checkout -b <branch-name>
Please replace <branch-name>
with a descriptive name for your branch.
-
Make your changes to the code or documentation.
-
Add tests for your changes if necessary.
-
Format your code using the following command:
make fmt
- Run the tests using the following command:
make test
- Check types using the following command:
make mypy
- Check lint using the following command:
make fmt-check
- If all checks pass, you can add and commit your changes using the following commands:
git add xxxx
make sure to replace xxxx
with the files you want to commit.
then commit your changes using the following command:
git commit -m "your commit message"
Please replace your commit message
with a meaningful commit message.
It will take some time to get used to the process, but it's worth it. And it will run all git hooks and checks before you commit. If it fails, you need to fix the issues then re-commit it.
- Push the changes to your forked repository using the following command:
git push origin <branch-name>
Create A Pull Request
-
Go to the GitHub website and navigate to your forked repository.
-
Click the "New pull request" button.
-
Select the branch you just pushed to and the branch you want to merge into on the original repository. Write necessary information about your changes and click "Create pull request".
-
Wait for the project maintainer to review your changes and provide feedback.
That's it you made it 🐣⭐⭐
Developing inside a Container
If you are using VS Code as your IDE for development, you can refer to the configuration here to set up the Dev Containers development environment.