Skip to main content

stapel-shop

CI coverage pypi downloads python license llms.txt

Composite preset for a catalog shop (categories + typed attributes + listings + reviews): wires stapel-categories, stapel-listings and stapel-reviews into one INSTALLED_APPS/urls/config bundle, defaults reviews' TARGET_TYPES to the catalog's listings, and owns the one piece of real cross-domain glue a composite is allowed to know both sides of: ListingReviewSummaryProjection (reviews -> listings per-listing rating aggregate, local live_query in the monolith or event-carried state transfer when reviews is split into its own service).

Part of the Stapel framework — composable Django apps that deploy as a monolith or as microservices without changing module code.

Install

pip install stapel-shop

At a glance

Fact Value
Version 0.2.2
Python >=3.11 (3.11, 3.12, 3.13, 3.14)
Fleet dependencies stapel-attributes · stapel-categories · stapel-listings · stapel-reviews

Documentation

capabilities.json · llms.txt (for agents)

Likes/favourites are NOT included yet: stapel-engagement does not exist. They arrive as a MINOR bump of this composite once it does.

Assemble (one line)

pip install stapel-tools
stapel-assemble myshop --libs shop
cd myshop && make test

That expands shop through the STAPEL_LIBS requires closure and wires every member module into INSTALLED_APPS, requirements.txt, urls.py and CONFIG.MD, then runs the verify gates.

Manual wiring (no scaffold)

# settings.py
from stapel_shop import preset

INSTALLED_APPS = [
    # ... django/stapel-core baseline (incl. stapel_core.django.projections)
    "stapel_categories",
    "stapel_listings",
    "stapel_reviews",
    "stapel_shop",
]
for _k, _v in preset.SETTINGS_DEFAULTS.items():
    globals().setdefault(_k, _v)

# urls.py
from django.urls import include, path

urlpatterns = [
    path("categories/", include("stapel_categories.urls")),
    path("listings/", include("stapel_listings.urls")),
    path("reviews/", include("stapel_reviews.urls")),
]

Config checklist (fill these, in the generated project's CONFIG.MD too)

Key Note
STAPEL_REVIEWS["TARGET_TYPES"] prefilled by stapel_shop.preset.SETTINGS_DEFAULTS (targets listing); add can_review/can_moderate Functions to restrict
STAPEL_LISTINGS["BASE_CURRENCY"] default USD — set your currency
STAPEL_LISTINGS["DEFAULT_LISTING_TTL_DAYS"] default 30
STAPEL_REVIEWS["RATING_MIN"/"RATING_MAX"] defaults 1..5

Glue (what this package actually contains)

  • stapel_shop.projections.ListingReviewSummaryProjection — reviews→listings rating aggregate. Local mode (monolith): live reads through reviews.aggregates_by_keys. Remote mode: ListingReviewSummary table fed from reviews.review.published/hidden facts, rebuilt from reviews.aggregates_export.
  • Read it ONLY through stapel_core.comm.projections.read("shop.listing_review_summary", keys=[...]){key: {"avg": float, "count": int}}, the same shape in both modes; a key with no published review is absent from the answer.
  • Requires stapel-reviews >= 0.2, the release that shipped both Functions this projection is declared against.

License

MIT — see LICENSE.


This page is assembled by stapel-readme from docs/readme.md plus the contract artifacts in docs/. Edit the prose in docs/readme.md; the badges, facts and links above and below it are generated — do not hand-edit README.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stapel_shop-0.2.2.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stapel_shop-0.2.2-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file stapel_shop-0.2.2.tar.gz.

File metadata

  • Download URL: stapel_shop-0.2.2.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_shop-0.2.2.tar.gz
Algorithm Hash digest
SHA256 546a501c6933726e27357f599d4909089915ce38b7600cafbff2f1275e958e01
MD5 1e6be9cc18e2eded8bb3795b950a2e84
BLAKE2b-256 1128787b1639b7957f5b7745e3cdde8e4f592ba3385e36baa22cd7d48e072cf6

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_shop-0.2.2.tar.gz:

Publisher: publish.yml on usestapel/stapel-shop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stapel_shop-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: stapel_shop-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 22.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_shop-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5980ac66db3d2e22712d1c5fcb31dc7b9a9667b4482f8c7dfec3569b327e3cc4
MD5 96f941060f3bbef0ff7e14f219ce415a
BLAKE2b-256 ad9ff8001ee983fbabca72e496ece9711ac64f908dee41feeff723517753ceab

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_shop-0.2.2-py3-none-any.whl:

Publisher: publish.yml on usestapel/stapel-shop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.3

2 files

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.5

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page