Skip to main content

Composable commerce core for products, order items, and payments.

Project description

commercexl

commercexl is a reusable commerce core for:

  • product catalog records
  • checkout orders
  • order items
  • payment systems
  • FastAPI router assembly

It does not create your DB engine, session factory, auth, or project-specific payment callbacks.

Installation

pip install commercexl

For tests and local development:

pip install "commercexl[test]"
pip install "commercexl[dev]"

What the library gives you

  • SQLAlchemy models via CommerceBase
  • explicit module wiring via CommerceModule
  • abstract services for products, order items, and payments
  • built-in balance and handmade payments
  • FastAPI router factory via create_router(...)

Quick start

from decimal import Decimal

from commercexl import (
    BaseConfig,
    CommerceModule,
    DefaultOrderItemService,
    HandMadePaymentService,
    PaymentConfigBuilder,
    ProductOrderConfig,
    ProductOrderConfigBuilder,
)


class ProjectCommerceConfig(BaseConfig):
    PAYMENT_SYSTEMS = {"USD": ("handmade",)}
    MIN_TOP_UP_AMOUNTS = {"USD": Decimal("1")}
    CREDITS_CONVERTERS = {"USD": Decimal("10000")}


commerce = CommerceModule(
    config_class=ProjectCommerceConfig,
    product_orders=ProductOrderConfigBuilder(
        ProductOrderConfig(MyProductService, DefaultOrderItemService),
    ),
    payments=PaymentConfigBuilder(HandMadePaymentService),
)

FastAPI integration

from commercexl import CommerceHTTPConfig, CommerceUserActorDTO, create_router

app.include_router(
    create_router(
        CommerceHTTPConfig(
            get_db_session_dependency=get_db_session,
            get_current_user_dependency=get_current_user,
            get_commerce_module=lambda: commerce,
            build_actor=lambda user: CommerceUserActorDTO(id=user.id),
            get_user_id=lambda user: int(user.id),
            is_staff=lambda user: bool(user.is_staff),
        ),
    ),
    prefix="/api/v1",
)

Alembic

commercexl does not ship migrations. The host project owns migrations.

Add library metadata to your Alembic target_metadata:

from commercexl import CommerceBase
from my_project.db import Base

target_metadata = [
    Base.metadata,
    CommerceBase.metadata,
]

Docs

Testing

pytest

Project details


Download files

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

Source Distribution

commercexl-0.1.4.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

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

commercexl-0.1.4-py3-none-any.whl (63.5 kB view details)

Uploaded Python 3

File details

Details for the file commercexl-0.1.4.tar.gz.

File metadata

  • Download URL: commercexl-0.1.4.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for commercexl-0.1.4.tar.gz
Algorithm Hash digest
SHA256 68c507b91a0ba806b2f90b61951c64d6b906db2a72144146bbda0e49854cb05e
MD5 3cc08b6c5eca1ff89067d9346d05048b
BLAKE2b-256 9f190893ea145edf963172d3f4d30f9ab319fdc3a6bc824596eab02178188834

See more details on using hashes here.

Provenance

The following attestation bundles were made for commercexl-0.1.4.tar.gz:

Publisher: ci.yml on Artasov/commercexl

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

File details

Details for the file commercexl-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: commercexl-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 63.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for commercexl-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 41280e1cea9b38f3f35e7d23e464bd853086207e879642fc84e4f511231e06de
MD5 e28018cd391996f115d42efe75dce2b6
BLAKE2b-256 0db3b34e353d4d42d7d4d91d87ccd23fa4cb310ff64b7b2fc3bf4e9b344721e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for commercexl-0.1.4-py3-none-any.whl:

Publisher: ci.yml on Artasov/commercexl

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

Supported by

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