First off, thanks for taking the time to help make syda – the Synthetic Data Generation Library better! We value every issue report, pull‑request, and idea.
TL;DR – Five Quick Rules
- Open an issue before a large change so we can discuss design.
- Fork the repo and create a topic branch off
main.- Write tests (pytest) and run
pre‑commit run --all-files.- Sign every commit:
git commit -s(DCO compliance).- Submit a PR that passes CI with a clear, single‑sentence title.
That's it! Read on for the details.
- Getting Started
- Developer Certificate of Origin (DCO)
- Project Setup
- Coding & Style Guide
- Testing
- Pull‑Request Checklist
- Issue Reports
- Commit Message Convention
- Documentation
- Community & Code of Conduct
# 1. Fork the repository on GitHub and clone your fork
$ git clone https://github.com/<your-user>/syda.git
$ cd syda
# 2. Install dev dependencies
$ python -m venv .venv && source .venv/bin/activate
$ pip install -e ".[dev]"
# 3. Install pre‑commit hooks
$ pre-commit installAll commands below assume you are in the virtual environment.
We use a DCO instead of a CLA. Each commit must be "signed off" to certify origin:
$ git commit -s -m "feat: add SQLAlchemy FK support"The -s flag automatically adds the required Signed-off-by: trailer using your Git username and email. CI will fail if any commit in the PR lacks a proper sign‑off.
| Task | Command |
|---|---|
| Install library in editable mode | pip install -e ".[dev] |
| Run unit tests | pytest |
| Run tests with coverage | pytest --cov=syda |
| Build docs locally | mkdocs serve |
| Format code | isort . && autopep8 . |
| Static analysis | flake8 . && mypy . |
Tip: all of the above are run automatically in CI; passing locally saves time.
- Python ≥ 3.8.
- Type annotations encouraged;
mypyruns in CI. - Public APIs must include docstrings in Google style.
- Avoid breaking API changes; if inevitable, update
CHANGELOG.mdand docs.
We strive for >70 % coverage. Please:
- Add or update pytest unit tests for every new feature or bugfix.
- Use factories/fakes—never real credentials or customer data.
- Run
pytest --cov=sydabefore pushing.
- PR title follows Conventional Commits (
feat: …,fix: …,docs: …). - All commits are signed (
git commit -s). - Branch is up‑to‑date with
main. -
pre‑commit run --all-filespasses. -
pytestand coverage tests pass. - Added/updated docstrings and MkDocs pages.
- If the PR changes the public API, updated
CHANGELOG.md. - Linked the related Issue (e.g.,
Fixes #42).
Good bug reports help us fix problems faster. Please include:
- Environment details: OS, Python version, database drivers.
- Steps to reproduce (minimal code snippet or failing test).
- Expected vs. actual behavior.
- Screenshots / stack traces where applicable.
Feature requests should explain why the feature is valuable and any implementation ideas.
We follow Conventional Commits to automate changelogs and semantic versioning.
<type>[optional scope]: <description>
[optional body]
[optional footer(
Common type values: feat, fix, docs, refactor, test, chore.
Example:
feat(generator): support YAML schema foreign‑keys
Adds FK resolution when loading a YAML schema so that referential
integrity is preserved automatically.
Fixes #128
User docs live in docs/ and are built with MkDocs + Material.
$ mkdocs serve # live reload at http://127.0.0.1:8000/Large API surfaces should include usage examples. Images must be SVG or compressed PNG.
We adhere to the Contributor Covenant Code of Conduct. Be respectful, inclusive, and professional.
Join the discussion in GitHub Discussions or on Matrix (#syda:matrix.org). For security issues, email security@syda.ai – please do not open a public issue.
Your time and expertise make syda better for everyone. We’re excited to review your contribution!