stapel-shop
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-engagementdoes 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 throughreviews.aggregates_by_keys. Remote mode:ListingReviewSummarytable fed fromreviews.review.published/hiddenfacts, rebuilt fromreviews.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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
546a501c6933726e27357f599d4909089915ce38b7600cafbff2f1275e958e01
|
|
| MD5 |
1e6be9cc18e2eded8bb3795b950a2e84
|
|
| BLAKE2b-256 |
1128787b1639b7957f5b7745e3cdde8e4f592ba3385e36baa22cd7d48e072cf6
|
Provenance
The following attestation bundles were made for stapel_shop-0.2.2.tar.gz:
Publisher:
publish.yml on usestapel/stapel-shop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stapel_shop-0.2.2.tar.gz -
Subject digest:
546a501c6933726e27357f599d4909089915ce38b7600cafbff2f1275e958e01 - Sigstore transparency entry: 2549729262
- Sigstore integration time:
-
Permalink:
usestapel/stapel-shop@012fe6b6fdbc67d39a00e3cbaa32296dd9fd1ddf -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/usestapel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@012fe6b6fdbc67d39a00e3cbaa32296dd9fd1ddf -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5980ac66db3d2e22712d1c5fcb31dc7b9a9667b4482f8c7dfec3569b327e3cc4
|
|
| MD5 |
96f941060f3bbef0ff7e14f219ce415a
|
|
| BLAKE2b-256 |
ad9ff8001ee983fbabca72e496ece9711ac64f908dee41feeff723517753ceab
|
Provenance
The following attestation bundles were made for stapel_shop-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on usestapel/stapel-shop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stapel_shop-0.2.2-py3-none-any.whl -
Subject digest:
5980ac66db3d2e22712d1c5fcb31dc7b9a9667b4482f8c7dfec3569b327e3cc4 - Sigstore transparency entry: 2549729570
- Sigstore integration time:
-
Permalink:
usestapel/stapel-shop@012fe6b6fdbc67d39a00e3cbaa32296dd9fd1ddf -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/usestapel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@012fe6b6fdbc67d39a00e3cbaa32296dd9fd1ddf -
Trigger Event:
push
-
Statement type: