First of all, thank you for considering contributing to ArchiPy! This document provides guidelines and instructions for contributing to this project. By following these guidelines, you help maintain the quality and consistency of the codebase.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Versioning
- Getting Help
This project adheres to a Code of Conduct that all contributors are expected to follow. Please read the full text to understand what actions will and will not be tolerated.
Bug reports help us improve ArchiPy. When creating a bug report:
- Use a clear, descriptive title that identifies the issue
- Provide detailed steps to reproduce the problem
- Include specific examples (code samples, error messages)
- Describe what you expected to happen versus what actually happened
- Include screenshots or GIFs if applicable
- List your environment details: Python version, ArchiPy version, OS, etc.
Enhancement suggestions help ArchiPy evolve. When suggesting features:
- Use a clear, descriptive title
- Provide a step-by-step description of the suggested enhancement
- Explain why this enhancement would benefit most ArchiPy users
- List any alternatives you've considered
- Include mockups or examples if applicable
We love code contributions! Here's the process:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Write code and tests for your feature or fix
- Ensure all tests pass and code meets quality standards
- Commit your changes:
git commit -m 'Add some amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request with a clear description of the changes
Documentation is crucial for user experience. You can help by:
- Fixing typos or clarifying existing documentation
- Adding examples or use cases
- Creating tutorials or how-to guides
- Updating documentation to reflect new features
Before contributing, ensure you have:
- Python 3.13+
- Poetry (dependency management)
- Git
- make (for running development commands)
-
Fork and clone the repository:
git clone https://github.com/YOUR-USERNAME/ArchiPy.git cd ArchiPy -
Set up the environment:
# Set up project pre-requisites make setup # Install development dependencies make install-dev
-
Create a branch for your work:
git checkout -b your-feature-branch
ArchiPy provides commands via a Makefile to simplify development:
# Install core dependencies
make install
# Install development dependencies (including all extras)
make install-dev
# Update dependencies to their latest versions
make update# Format code with black
make format
# Run all linters (ruff, mypy)
make lint
# Run pre-commit hooks on all files
make pre-commit
# Run all checks (linting and tests)
make check# Run BDD tests with behave
make behave# Clean artifacts
make clean
# Build project distribution
make build
# Display current version
make version
# Bump versions
make bump-patch # Bug fixes
make bump-minor # New features
make bump-major # Breaking changesFor a complete list:
make help- Ensure your code passes all checks: Run
make checklocally - Update documentation if necessary
- Add tests for new features or bug fixes
- Ensure compatibility with Python 3.13+
- Verify all CI checks pass on your PR
Pull requests are typically reviewed within a few days. Maintainers may request changes or clarifications about your implementation.
ArchiPy follows Semantic Versioning:
- Patch (
make bump-patch): Bug fixes and minor improvements - Minor (
make bump-minor): New features (backward compatible) - Major (
make bump-major): Breaking changes
If you need assistance with contributing:
- Open an issue with your question
- Contact maintainers:
- Hossein Nejati: hosseinnejati14@gmail.com
Thank you for contributing to ArchiPy! Your efforts help make this project better for everyone.