Contributing to AIDE ML
We welcome contributions from the community! Whether you're fixing a bug, adding a new feature, or improving documentation, your help is appreciated. Please follow these guidelines to ensure a smooth process.
Development Setup
To get started with development, you'll need to set up a local environment.
-
Fork and Clone:
Fork the repository on GitHub, then clone your fork locally:
git clone https://github.com/your-username/aideml.git cd aideml
-
Create a Virtual Environment:
It's highly recommended to work in a Python virtual environment.
python3.10 -m venv .venv source .venv/bin/activate
-
Install Dependencies:
Use the
Makefile
for a convenient one-step installation. This will install the package in editable mode (-e
) along with all development dependencies.make install
Alternatively, you can install manually:
pip install --upgrade pip pip install -r requirements.txt pip install -e .
Code Style and Linting
This project uses ruff
for linting and black
for code formatting. A GitHub Action workflow (.github/workflows/linter.yml
) runs these checks on every push and pull request.
Before submitting your code, please run the linters locally:
# Run Ruff linter
ruff check aide/
# Run Black to check for formatting issues
black --check --diff aide/
# To automatically fix formatting issues, run:
black aide/
Submitting a Pull Request
- Create a new branch for your feature or bug fix:
git checkout -b feature/my-new-feature
. - Make your changes and commit them with a clear message.
- Push your branch to your fork:
git push origin feature/my-new-feature
. - Open a pull request against the
main
branch of theWecoAI/aideml
repository. - Fill out the pull request template provided (
.github/pull_request_template.md
), explaining the purpose and summary of your changes.
Reporting Issues
If you encounter a bug or have an idea for a new feature, please use the GitHub Issues tab.
- Bug Reports: Use the "Bug" template. Provide as much detail as possible, including your AIDE version, LLM used, OS, and any relevant logs or error messages.
- Feature Requests: Use the "Feature Request" template to describe the problem you're trying to solve and your proposed solution.
- Technical Proposals: For significant architectural or technology changes, use the "Technical Proposal" template.