equilink-site/HOW_TO_CONTRIBUTE
2025-02-12 17:38:06 +05:30

204 lines
6.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# How to Contribute
Welcome to the **ARAI AI Agents** project! We appreciate your interest in contributing. This guide outlines our contribution process, coding conventions, and best practices to ensure a smooth and collaborative experience.
## Table of Contents
1. [Code of Conduct](#code-of-conduct)
2. [Getting Started](#getting-started)
3. [Branching & Workflow](#branching--workflow)
4. [Style & Documentation](#style--documentation)
- [Docstring Guidelines](#docstring-guidelines)
- [Author Attribution](#author-attribution)
5. [Commit Messages & Tagging](#commit-messages--tagging)
6. [Testing Your Changes](#testing-your-changes)
7. [Pull Requests](#pull-requests)
8. [Need Help?](#need-help)
---
## 1. Code of Conduct
Please review our [Code of Conduct](./CODE_OF_CONDUCT.md) before contributing. By participating, you agree to uphold a respectful and inclusive environment for everyone.
---
## 2. Getting Started
**1. Fork & Clone**
- Fork this repository using the **Fork** button on GitHub.
- Clone your fork locally, for example:
```bash
git clone https://github.com/<your-username>/arai_ai_agents.git
```
- Set up your remote so you can pull changes from the official repo later:
```bash
git remote add upstream https://github.com/arai-ai/arai_ai_agents.git
```
**2. Create a Virtual Environment**
We recommend using [conda](https://docs.conda.io/en/latest/) or [venv](https://docs.python.org/3/library/venv.html):
```bash
conda create --name arai_ai_agents python=3.11
conda activate arai_ai_agents
```
**3. Install Dependencies**
```bash
pip install -r requirements.txt
```
**4. Youre All Set!**
Now you can explore the codebase, run `main.py`, or execute tests to ensure everything is working.
---
## 3. Branching & Workflow
1. **Create a Branch**
- Use a descriptive name for your branch, for example:
- `feat/new-twitter-connector`
- `fix/spelling-typos`
- `docs/improve-readme`
```bash
git checkout -b feat/new-twitter-connector
```
2. **Make Changes & Commit**
- Keep commits small and focused.
- Write clear commit messages (see [Commit Messages & Tagging](#commit-messages--tagging)).
3. **Pull & Rebase** (before pushing)
- Keep your branch up-to-date with the main branch:
```bash
git checkout main
git pull upstream main
git checkout feat/new-twitter-connector
git rebase main
```
4. **Push Your Branch**
```bash
git push origin feat/new-twitter-connector
```
---
## 4. Style & Documentation
### Docstring Guidelines
We follow **Google Style Python Docstrings**:
[https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
- **Module Docstrings**
At the top of each new or updated module, include something like:
```python
"""
Module: twitter_connector
=========================
This module implements the TwitterConnector class for interacting with Twitter APIs.
Title: Twitter Connector
Summary: Twitter connector implementation.
Authors:
- @TheBlockRhino
Date: 2024-12-31
Last Updated: 2024-12-31
URLs:
- https://arai-ai.io
- https://github.com/ARAIDevHub/arai-ai-agents
- https://x.com/TheBlockRhino
"""
```
- If you **modify** an existing file, add your name to the **Authors** list and update the **Last Updated** field.
- **Function & Class Docstrings**
Use the Google-style format for parameters, returns, exceptions, etc. Example:
```python
def my_function(param1: str, param2: int) -> bool:
"""
Perform an example operation and return a boolean.
Args:
param1 (str): Description of param1.
param2 (int): Description of param2.
Returns:
bool: Explanation of the return value.
"""
```
### Author Attribution
Whenever you add a **substantial** piece of work (new module, major refactor), be sure to:
- Add your handle to the module docstrings **Authors** list.
- Keep track of changes in the **Last Updated** date.
---
## 5. Commit Messages & Tagging
We recommend [semantic versioning](https://www.gitkraken.com/gitkon/semantic-versioning-git-tags) and **descriptive commit messages**.
- **Prefix** your commits with a type, for example:
- `feat:` when you add a new feature
- `fix:` when you fix a bug
- `docs:` for documentation updates
- `test:` for test-related changes
- `refactor:` for code improvements without changing functionality
- `perf:` for performance improvements
- `chore:` for minor tasks like updating `.gitignore`
**Example**:
```
feat: add advanced prompt chaining for TwitterConnector
- Created prompt_chain_v2.py
- Updated docstrings in twitter_connector.py
- Bumped version from 1.2.0 to 1.3.0
```
Use **Git Tags** (`git tag v1.3.0`) for:
- Major releases
- Milestones
---
## 6. Testing Your Changes
1. **Run Existing Tests**
```bash
pytest
```
or
```bash
python -m unittest discover tests
```
2. **Add New Tests**
- Place new tests in the `tests/` folder, matching your new modules or functionalities.
- Ensure all tests pass before submitting a pull request.
---
## 7. Pull Requests
1. **Open a Pull Request** in your forks **GitHub** page.
2. **Provide a clear description** of what you changed and why.
3. **Reference** any relevant **issues** or user stories (e.g., `Closes #42`).
4. Wait for a **review**. Maintainers may request changes or clarifications.
**Pro-Tip**: If your PR covers multiple changes, consider splitting it into smaller PRs for easier review.
---
## 8. Need Help?
- Check the [Issues](https://github.com/arai-ai/arai_ai_agents/issues) or [Discussions](https://github.com/arai-ai/arai_ai_agents/discussions) for open topics.
- Ask questions or clarifications in a GitHub Issue.
We appreciate your time and effort in making **ARAI AI Agents** even better. Thank you for contributing!
---
*Happy coding!*
*The ARAI AI Agents community*