Skip to main content

Framework to build hexagonal architecture applications in Python.

Project description

python-hexagonal

python-hexagonal is a library for building hexagonal applications in Python. The real usage story lives in src/example and the proof lives in src/tests/use_cases, so this documentation starts there instead of pretending a two-line snippet is enough.

Start here

What you learn from the first path

After the first-app guide you should understand:

  • where the domain model lives and why it stays isolated
  • how application APIs wrap command, query, and event buses
  • how ports describe the infrastructure your app needs
  • how entrypoints assemble an app from environment and infrastructure
  • how the use-case tests prove the workflow end to end

The blueprint we actually trust

These files are the baseline for the supported adoption story:

  • src/example/contacto/domain/contacto.py - aggregate behavior, value-object strategy, and query entry points
  • src/example/contacto/application/app.py - application composition through BusAppGroup
  • src/example/contacto/ports/drivens.py - infrastructure contracts and repository boundaries
  • src/example/app/application/api.py - top-level API wrapper consumers call
  • src/example/app/entrypoints/main.py - environment-driven bootstrap via EntrypointGroup
  • src/example/app/entrypoints/db/sqlalchemy.py - SQLAlchemy-specific infrastructure assembly
  • src/tests/use_cases/base.py - canonical test bootstrap with migrations, entrypoint creation, and topic registration

Supported path vs internals

The documented path is intentionally narrow.

  • Start from hexagonal.domain, hexagonal.application, hexagonal.ports.drivens, hexagonal.ports.drivers, and hexagonal.entrypoints
  • Reach for hexagonal.integrations.sqlalchemy when you need the reusable SQLAlchemy repository and unit-of-work utilities
  • Treat scoped execution as the default mental model: shared datastore and mapper, fresh write/read scope per operation
  • Treat hexagonal.entrypoints.sqlalchemy as adapter-specific convenience, not the whole framework story
  • Do not treat hexagonal.__init__ as the public integration surface; right now it only exposes hello()
  • Do not cargo-cult example names like exampleAPI, exampleEntrypoint, or Exampletate; copy the roles, not the labels
  • Do not build new code against hexagonal.adapters.*; that path is kept for compatibility, while the supported SQLAlchemy extension surface now lives under hexagonal.integrations.sqlalchemy

Companion skill

This repo also ships an installable companion skill at skills/python-hexagonal-usage/SKILL.md. It is there to inspect a user repository, map it to the same architecture, and point people back to the written docs. It does NOT replace the docs and it does NOT get to invent new supported APIs.

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

python_hexagonal-0.3.2.tar.gz (42.0 kB view details)

Uploaded Source

Built Distribution

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

python_hexagonal-0.3.2-py3-none-any.whl (71.2 kB view details)

Uploaded Python 3

File details

Details for the file python_hexagonal-0.3.2.tar.gz.

File metadata

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

File hashes

Hashes for python_hexagonal-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a609d8dc9de8608c2ef4e2253a19c34feb30644918a3f2a7986a18a7df30ef9e
MD5 bf5dacc6100a871d343e76db69a15116
BLAKE2b-256 a0914ce0d4759b57bab36cff3f5968be8d8d7f4a1f46ee754ffa394b45a06d9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_hexagonal-0.3.2.tar.gz:

Publisher: python-publish.yml on jose-matos-9281/python-hexagonal

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

File details

Details for the file python_hexagonal-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for python_hexagonal-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a7f4a410310b79215982be95838dc7f2659a0d5f042f0e3bfd28a7dd088247e8
MD5 5242602aa245d7a6a8a0d2ceda095561
BLAKE2b-256 f97138488128f7aa5abc95ebfed32f5cf978bf49c271d60762b3b3d1e86463a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_hexagonal-0.3.2-py3-none-any.whl:

Publisher: python-publish.yml on jose-matos-9281/python-hexagonal

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