repairshopr-api
Python client and sync utilities for RepairShopr.
repairshopr_api: API models and helpersrepairshopr_sync: Django-based sync service (optional)
Development
- Python version:
3.14 - Install runtime dependencies:
uv sync - Install development dependencies:
uv sync --group dev - Build package:
uv build
Lockfile Guardrails
This repo treats uv.lock as a committed artifact and enforces lockfile
consistency with local checks and CI.
- Check lockfile consistency:
./scripts/check-lockfile.sh - Refresh lockfile after dependency/version changes:
uv lock - Ensure both files are committed together when needed:
git add pyproject.toml uv.lock
Tests
The repository uses pytest with coverage gates.
-
Install test dependencies:
uv sync --group dev -
Run the full suite:
uv run pytest -q -
Run with explicit coverage output:
uv run pytest --cov --cov-report=term-missing -
Run MySQL integration tests:
uv sync --group dev --extra sync uv run python -m django migrate --noinput --settings=tests.django_settings_mysql uv run pytest -q -m integration --ds=tests.django_settings_mysql --no-cov
Notes:
- Tests do not call the live RepairShopr API.
- Shell tests for
scripts/repairshopr-sync-entrypoint.shrun with command stubs. - The default coverage threshold is enforced at
80%. - A dedicated CI job runs MySQL-backed integration checks for schema/migrations.
Code Quality Gates
In addition to tests, run IDE inspections on changed code before opening a PR.
- PyCharm: run Inspect Code on changed files (or whole project for larger changes).
- Required threshold: no
errorseverity inspection findings. - Recommended threshold: no new
warningseverity findings in touched files.
This is a local quality gate and complements (does not replace) the pytest/coverage gates above.
Release (PyPI)
Releases are tag-driven. The GitHub Actions workflow publishes to PyPI only
when a tag matching v* is pushed.
- Bump the version in
pyproject.toml. - Refresh lockfile:
uv lock. - Confirm lockfile is clean:
./scripts/check-lockfile.sh. - Commit the changes on
main. - Create a tag
vX.Y.Zat that commit. - Push the commit and tag:
git push origin main --follow-tags.
Pushing to main without a tag does not publish.
Release files for repairshopr-api 0.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| repairshopr_api-0.4.5.tar.gz | 77.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| repairshopr_api-0.4.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 135.9 kB
Release files / repairshopr_api-0.4.5.tar.gz
| Download URL | repairshopr_api-0.4.5.tar.gz |
|---|---|
| Size | 77.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
06e087348022bacc3e475706d3464920194b4e5c1d1a582e1324c7a9a57c36fe
|
|
BLAKE2b-256 checksum How to use checksums |
413af539d0a9b72a7609b3a01762d20440f4fcfeb7236ab29fe7c3fa5d5b1152
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / repairshopr_api-0.4.5-py3-none-any.whl
| Download URL | repairshopr_api-0.4.5-py3-none-any.whl |
|---|---|
| Size | 58.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
077e1772945f3e3b51031d4d8daaaf2072b3650c9e996948a79f47e984119176
|
|
BLAKE2b-256 checksum How to use checksums |
7864c4071bca4e4600cf95dcfc85b30259ad2a18de340a9d6a3bf57c66f64311
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|