Thanks for thinking about contributing. codechu-ipc is a small set
of stdlib-only local-IPC primitives — Unix sockets, FIFOs, JSON-line
framing, pidfiles. Patches that stay focused, well-tested, and
dependency-free are warmly received.
git clone https://github.com/codechu/codechu-ipc-py.git
cd codechu-ipc-py
pip install -e ".[dev]"
pytest -q
ruff check src tests- Branch names:
feature/<short>,fix/<short>,refactor/<short>,docs/<short>,test/<short>. - Commit messages: Conventional Commits
(
feat:,fix:,refactor:,docs:,test:,chore:). - One change per PR — keep diffs reviewable.
A useful bug report includes:
- OS + kernel version + Python version.
- The exact sequence of calls (server side and client side).
- The behaviour you observed vs. the behaviour you expected.
- For socket / FIFO permission bugs:
ls -laon the socket file.
pytest -qmust pass.- New feature → new test. Use
tmp_pathfor socket and FIFO files so tests stay hermetic. - Concurrency tests should bound their waits — no unconditional
time.sleep. Use a deadline loop with a tight poll interval.
The public surface is UnixServer, UnixClient, JsonLineProtocol,
FifoChannel, and pidfile. Wire formats (the JSON-line framing)
are part of the contract; changing them is a major version bump.
No external runtime dependencies. If you need one, the answer is almost always "no, write it in stdlib".
ruff check+ruff formatclean.- Type hints on public APIs (
from __future__ import annotations).
If you find a security issue, see SECURITY.md — do not open a public issue for it.
Every commit must be signed off with the DCO. The sign-off certifies that you wrote the patch, or otherwise have the right to submit it under the project's license. Add a line to your commit message:
Signed-off-by: Your Name <you@example.com>
git commit -s does this automatically. PRs without sign-off will
be asked to amend before merge.
Contributions are accepted under the project's license (see LICENSE).