First off, thank you for considering contributing to PyLoPi! It's people like you that make PyLoPi such a great tool.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check the existing issues to avoid duplicates. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps which reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed after following the steps
- Explain which behavior you expected to see instead and why
- Include screenshots if possible
- Include your environment details (OS, Python version, etc.)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Provide specific examples to demonstrate the steps
- Describe the current behavior and explain which behavior you expected to see instead
- Explain why this enhancement would be useful
- Fill in the required template
- Do not include issue numbers in the PR title
- Include screenshots and animated GIFs in your pull request whenever possible
- Follow the Python style guide (PEP 8)
- Include thoughtfully-worded, well-structured tests
- Document new code
- End all files with a newline
- Fork the repo
- Clone your fork
git clone https://github.com/PicoBaz/PyLoPi.git
cd PyLoPi- Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies
pip install -r requirements.txt- Create a branch
git checkout -b feature/your-feature-name- Follow PEP 8
- Use 4 spaces for indentation
- Maximum line length of 100 characters
- Use descriptive variable names
- Add docstrings to all functions and classes
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
Example:
Add support for MySQL log parsing
- Implement MySQL error pattern matching
- Add MySQL-specific error analysis
- Update documentation with MySQL examples
Closes #123
Before submitting a pull request, please ensure:
- All existing tests pass
- New features include appropriate tests
- Code coverage remains high
Run tests with:
python -m pytest tests/- Update the README.md with details of changes to the interface
- Update the documentation for any new features
- Add comments in code for complex logic
- Include docstrings for all public methods
Understanding the project structure will help you contribute more effectively:
PyLoPi/
├── app.py # Main application entry point
├── database.py # Database operations
├── log_analyzer.py # Core analysis logic
├── email_notifier.py # Email functionality
├── config_manager.py # Configuration handling
├── templates/ # HTML templates
│ └── index.html # Main web interface
└── tests/ # Test files
- Edit
log_analyzer.py - Add pattern to
error_patternsdictionary - Add analysis in
generate_analysis() - Add solution in
get_default_solution() - Add code fix in
generate_code_fix() - Update tests
- Update documentation
- Edit
templates/index.html - Add translations to
translationsobject - Test language switching
- Update README
- Create new file in project root
- Import in
app.py - Add initialization code
- Add API endpoints if needed
- Update configuration
- Add documentation
- Update version number in
setup.py - Update CHANGELOG.md
- Create release notes
- Tag the release
- Push to GitHub
- Create GitHub release
- Join our discussions on GitHub
- Follow development updates
- Help others in issues and discussions
Feel free to open an issue with your question or reach out to the maintainers directly.
Thank you for contributing to PyLoPi! 🎉