Thanks for contributing! Here's how to get started quickly.
git clone https://github.com/YOUR_USERNAME/wauldo-sdk-python
cd wauldo-sdk-python
pip install -e ".[dev]"
pytestAll tests pass without an API key — they use MockHttpClient internally.
pytest # all tests
pytest tests/test_http_mock.py # specific file
pytest -x # stop on first failureFor async tests, pytest-asyncio is included in dev deps. Just write async def test_... and it works.
You don't need a Wauldo API key to develop. Use MockHttpClient for everything:
from wauldo import MockHttpClient
client = MockHttpClient(chat_response="test answer")
result = client.rag_query("question?")
assert result.answer == "test answer"If you're adding a new feature, write tests against the mock client first.
- Python 3.9+ (no walrus operator patterns that break 3.9)
- Type hints on all public methods
- Formatting:
ruffwith 100 char line length (config is inpyproject.toml) - 4 spaces, LF line endings
Run the linter before pushing:
ruff check src/ tests/
mypy src/- One PR per feature/fix, keep it small
- Add tests for new functionality
- Update README if you're adding something user-facing
- Make sure
pytestandruff checkpass
Write plain English, describe what you did:
add retry logic to async client
fix timeout handling in streaming
update mock client to support file uploads
- Has tests
- Doesn't break existing tests
- Small and focused (< 300 lines is ideal)
- Touches one concern at a time
Check issues labeled good first issue. Adding methods to MockHttpClient is a great place to start since you can write and test everything offline.
Open an issue or comment on an existing one. We're happy to help.