Skip to content

Latest commit

 

History

History
94 lines (68 loc) · 1.98 KB

CONTRIBUTING.md

File metadata and controls

94 lines (68 loc) · 1.98 KB

Contributing to Kelzer

Thanks for your interest in contributing to Kelzer!

Getting Started

  1. Fork the repository
  2. Clone your fork:
    git clone https://github.com/YOUR_USERNAME/kelzer.git
    cd kelzer

Development Setup

Requirements

  • Python 3.9+
  • A C++17 compatible compiler (GCC, Clang, or MSVC)
  • pip

Building Locally

pip install -e .

This compiles the C++ extension and installs it in editable mode.

How to Contribute

Reporting Bugs

Open an issue with:

  • Clear description of the bug
  • Steps to reproduce
  • Expected vs actual behavior
  • Python version, OS, and compiler

Suggesting Features

Open an issue with:

  • Clear description of the feature
  • Use case and motivation
  • Any implementation ideas

Pull Requests

  1. Create a feature branch:
    git checkout -b feature/your-feature-name
  2. Make your changes
  3. Build and verify locally: pip install -e .
  4. Test your changes in a Python shell
  5. Commit with clear messages
  6. Push and open a PR

Code Style

  • C++17 standard
  • Keep functions small and focused
  • Use noexcept where appropriate
  • Validate all inputs from Python before computation
  • Prefer static inline for hot-path helpers

Commit Messages

Use clear, descriptive commit messages:

  • fix: resolve rounding edge case at decimals=0
  • feat: add batch calculation support
  • docs: update installation instructions
  • refactor: simplify input validation

Project Structure

kelzer/
├── cpp/
│   └── kelzer.cpp       # C++ extension module
├── setup.py             # Build configuration
├── pyproject.toml       # Project metadata
└── requirements.txt             # Build dependencies

Code of Conduct

Be respectful and constructive. We're all here to build something useful.

Questions?

Open an issue or reach out at odin@odinglynn.com.

License

By contributing, you agree that your contributions will be licensed under the Apache License 2.0.