Skip to main content

repairshopr-api

Python client and sync utilities for RepairShopr.

  • repairshopr_api: API models and helpers
  • repairshopr_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.sh run 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 error severity inspection findings.
  • Recommended threshold: no new warning severity 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.

  1. Bump the version in pyproject.toml.
  2. Refresh lockfile: uv lock.
  3. Confirm lockfile is clean: ./scripts/check-lockfile.sh.
  4. Commit the changes on main.
  5. Create a tag vX.Y.Z at that commit.
  6. 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)

Source distribution for repairshopr-api 0.4.5
File Size Uploaded
repairshopr_api-0.4.5.tar.gz 77.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for repairshopr-api 0.4.5
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.4.5 This release

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.93

2 release files

0.1.89

2 release files

0.1.83

2 release files

0.1.82

2 release files

0.1.81

2 release files

0.1.80

2 release files

0.1.79

2 release files

0.1.76

2 release files

0.1.72

2 release files

0.1.63

2 release files

0.1.61

2 release files

0.1.53

2 release files

0.1.52

2 release files

0.1.48

2 release files

0.1.46

2 release files

0.1.45

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.34

2 release files

0.1.32

2 release files

0.1.28

2 release files

0.1.26

2 release files

0.1.22

2 release files

0.1.17

2 release files

0.1.13

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page