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.

  1. Fork and Clone:

    Fork the repository on GitHub, then clone your fork locally:

    git clone https://github.com/your-username/aideml.git
    cd aideml
  2. Create a Virtual Environment:

    It's highly recommended to work in a Python virtual environment.

    python3.10 -m venv .venv
    source .venv/bin/activate
  3. 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

  1. Create a new branch for your feature or bug fix: git checkout -b feature/my-new-feature.
  2. Make your changes and commit them with a clear message.
  3. Push your branch to your fork: git push origin feature/my-new-feature.
  4. Open a pull request against the main branch of the WecoAI/aideml repository.
  5. 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.