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.3.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.3-py3-none-any.whl (63.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for commercexl-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6e0fcb7605623f887dd2c13286983ce319c51ede9cfa14cf21d50fe78b300948
MD5 eaf448e568f1420da23be8a2c98779a1
BLAKE2b-256 ef618aa92e728640705422f7a32bedce0d7132922e60cf3ad90a6643d29bfe7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for commercexl-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: commercexl-0.1.3-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.7

File hashes

Hashes for commercexl-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d111453a9e8cbd3bf7514cd03dc1cd55ea0d355ed531ed59b629c13ecc8c4d5a
MD5 24e1f56e713f472d0803cd1703279f21
BLAKE2b-256 7721b57d299a4f2dc614428f2870e6497ddf484fd6bc9626a1e4f77802761a16

See more details on using hashes here.

Provenance

The following attestation bundles were made for commercexl-0.1.3-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