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.
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| repairshopr_api-0.4.5.tar.gz | 77.5 kB | Without provenance | Details for repairshopr_api-0.4.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| repairshopr_api-0.4.5-py3-none-any.whl | Python 3 | none | any | Details for repairshopr_api-0.4.5-py3-none-any.whl |
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
|
Security for repairshopr-api 0.4.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.