# Contributing to PyTECGg

First off, thanks for taking the time to contribute! 🎉  
Open source projects like this one thrive on community input.


## How to contribute

Whether you want to fix a bug, propose a new feature, improve the documentation, or just ask a question — you're welcome here!

Here are common ways to get involved:

- Report bugs
- Suggest enhancements
- Submit pull requests
- Improve documentation
- Review pull requests


## Getting started

1. Clone the repository and make sure you have the latest version
    ```bash
    git checkout develop
    git pull origin develop
    ```
2. Create your feature branch from `develop`
    ```bash
    git checkout -b feature_amazing_feature develop
    ```
3. Make your changes and format your code with `black .` (please refer to the [Code style](#code-style) section)
4. Run tests with `pytest` to ensure everything works
5. Commit and push to your branch
6. Open a Pull Request (PR) to the `develop` branch

Please ensure that **each commit is atomic** (one feature/fix per commit) and includes a **clear message**. For bigger changes, consider writing a descriptive body.


## Code style

This project uses [**Black**](https://github.com/psf/black) as the code formatter: please run `black .` before pushing your code.

Some general conventions:

- Write readable, **modular** code.

- Add **comments** (if something isn’t immediately obvious) **explaining the why**, not the how.

- Use meaningful variable names.

- Prefer **clarity** over cleverness.


## Testing

If your changes affect functionality, please include appropriate tests or describe how the changes were manually tested. This project uses [pytest](https://github.com/pytest-dev/pytest).

**Before submitting a PR**, please ensure all tests pass by running `pytest`


## Release Process

For contributors submitting PRs, please ensure:

- You've updated the `README.md` file — if your changes affect usage or documentation

- All tests pass

Once your PR is merged to `develop`, maintainers will:

- Handle version tagging and management

- Automatically build and publish releases to PyPI

- Ensure cross-platform compatibility (Windows, Linux, macOS)


## Bug reports

If you find a bug, open an issue with the `bug` tag and:

- A clear title

- A short description of the bug

- Steps to reproduce (if possible)

- Expected vs. actual behavior

- Environment (Python version, OS, etc.)

## Feature suggestions

Want to propose something new? Great! Open an issue with the enhancement `tag` and describe:

- What the feature does

- Why it would be useful

- Any technical considerations or ideas for implementation

## Community

You can reach out by opening an issue for general discussion or suggestions.

Let’s keep things respectful, constructive, and collaborative.

Thanks again! 💙