Thank you for your interest in contributing to the AxonFlow Python SDK! We welcome contributions from the community.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/axonflow-sdk-python.git - Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Run tests:
pytest - Commit your changes:
git commit -m "Add your feature" - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request
- Python 3.9 or higher
- Git
git clone https://github.com/getaxonflow/axonflow-sdk-python.git
cd axonflow-sdk-python
pip install -e ".[dev]"# Run all tests
pytest
# Run tests with coverage
pytest --cov=axonflow --cov-report=term-missing
# Run tests with verbose output
pytest -v# Run Ruff linter
ruff check .
# Run Ruff formatter
ruff format .
# Run MyPy type checking
mypy axonflowSet up your environment variables:
export AXONFLOW_AGENT_URL="https://staging-eu.getaxonflow.com"
export AXONFLOW_LICENSE_KEY="your-license-key"Run examples:
# Basic example
python examples/basic_usage.py
# Gateway mode example
python examples/gateway_mode.py
# Interceptors example
python examples/interceptors.py- Follow PEP 8 style guide
- Use Ruff for linting and formatting:
ruff check . && ruff format . - Use type hints for all function signatures
- Run MyPy for type checking:
mypy axonflow - Keep functions focused and well-documented
- Use meaningful variable and function names
- Add docstrings for all public functions and classes
- Keep PRs focused: One feature or fix per PR
- Update documentation: If you change the API, update README.md
- Add tests: All new features should include tests
- Pass CI checks: Ensure all tests pass before submitting
- Write clear commit messages: Describe what and why, not how
Add feature: brief description
Detailed explanation of the changes and why they were made.
Any breaking changes should be clearly noted.
Have an idea for a new feature? We'd love to hear it!
- Check existing issues to avoid duplicates
- Open a new issue with the "Feature Request" label
- Describe the feature and its use case
- Discuss implementation approach
Found a bug? Help us fix it!
- Check existing issues to avoid duplicates
- Open a new issue with the "Bug" label
- Include:
- Python version
- Operating system
- Steps to reproduce
- Expected behavior
- Actual behavior
- Error messages or logs
We use pytest for testing. When adding new features:
- Add unit tests for new functions
- Add integration tests for API interactions
- Ensure test coverage remains above 80%
- Use pytest-httpx for mocking HTTP calls
Example test structure:
import pytest
from pytest_httpx import HTTPXMock
from axonflow import AxonFlow
@pytest.mark.asyncio
async def test_proxy_llm_call(httpx_mock: HTTPXMock):
httpx_mock.add_response(json={"success": True, "data": "result"})
async with AxonFlow(
endpoint="https://test.example.com",
client_id="test",
client_secret="test",
) as client:
result = await client.proxy_llm_call("token", "query", "chat")
assert result.success is True- Update README.md for user-facing changes
- Add docstrings for all public functions and classes
- Include usage examples in docstrings when helpful
- Keep documentation clear and concise
- All PRs require at least one approval
- Maintainers will review your PR within 3-5 business days
- Address feedback and update your PR
- Once approved, a maintainer will merge your PR
By contributing to AxonFlow Python SDK, you agree that your contributions will be licensed under the MIT License.
If you have questions about contributing, feel free to:
- Open a discussion on GitHub
- Email us at dev@getaxonflow.com
- Check our documentation at https://docs.getaxonflow.com
Thank you for contributing to AxonFlow!