Skip to main content

Hexagonal Sanity Check

Project description

Hexagonal Sanity Check

This project checks if the dependency flow between the layers of the Hexagonal architecture defined for this project was respected.

How to install

It can be easily installed via pip: pip install hexagonal-sanity-check

How to configure your project

First it's necessary to define your hexagonal layers and their order. The tool expects a default file name on your source folder dir with the name hexagonal_config.py.

  1. First you create the Hexagonal Layers you have on your system via the class name HexagonalLayer. There are two arguments:

    • name: It can be any name, domain, frontend, infrastructure, or any name you used for your layers.
    • usecases: This is the name of the directory the files related to this layer as storage. It's not the full path, it's the directory name relative path from source.
  2. Import hexagonal_config on your file, and define the order with + (add layers) then >>(set the sequence of the layers). The most to the left layers is the most outer layer, while the most to the right layer is the most inner layer.

Example, for this folder structure:

. src
├── __init__.py
├── hexagonal_config.py
├── domain
│   ├── __init__.py
│   ├── __pycache__
│   └── person.py
├── infrastructure
│   ├── __init__.py
│   └── person_mysql_repository.py
├── main.py
├── services
│   ├── __init__.py
│   └── person_repository.py
└── usecases
    ├── __init__.py
    └── create_person_usecase.py
.tests    

The file:

from hexagonal.domain.hexagonal_layer import HexagonalLayer
from hexagonal.hexagonal_config import hexagonal_config

hexagonal_config.add_inner_layer(HexagonalLayer(name='infrastructure', directories=['/infrastructure']))
hexagonal_config.add_inner_layer(HexagonalLayer(name='use_cases', directories=['/use_cases']))
hexagonal_config.add_inner_layer(HexagonalLayer(name='services', directories=['/services']))
hexagonal_config.add_inner_layer(HexagonalLayer(name='domain', directories=['/domain']))

hexagonal_config.excluded_dirs = ['/tests']

Generating the Project Diagram

This command generate a visual diagram show the composition of your hexagonal layers.

Pre requisites

To generate the Hexagonal Diagram of the project, it's necessary to have Graphviz installed in the machine.
For Mac you can brew install graphviz.
For other, check the documentation https://graphviz.org/download/.

CMD

hexagonal diagram --source_path ./

Checking Project's Hexagonal Integrity

This checks if the correct flow of the dependencies -from outer to inner layer- was respected.

CMD

hexagonal check --source_path ./

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

hexagonal-sanity-check-0.0.21.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

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

hexagonal_sanity_check-0.0.21-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file hexagonal-sanity-check-0.0.21.tar.gz.

File metadata

  • Download URL: hexagonal-sanity-check-0.0.21.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.9 Linux/5.11.0-1021-azure

File hashes

Hashes for hexagonal-sanity-check-0.0.21.tar.gz
Algorithm Hash digest
SHA256 294569b78f2058d23d7b3b8ea809f632eaa9faa80b001dec166731b32f2e1669
MD5 1423d8a0cbc5d71afdfca64db9a1323c
BLAKE2b-256 2f9b10ac002eacb8bcad353e258987630582c393c92c99cea230cf383a0f6987

See more details on using hashes here.

File details

Details for the file hexagonal_sanity_check-0.0.21-py3-none-any.whl.

File metadata

File hashes

Hashes for hexagonal_sanity_check-0.0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 57e86f5e159c54c87049314f91bd5564258a46c73873e74e9ca2d381534af748
MD5 fcfeada9f8d7e1e53f2a1f1c2fad9604
BLAKE2b-256 da8c48229bd7c2e70fa4eeec1cb7902cbf3f0d2d5a9a83ff9ce599ee494ad309

See more details on using hashes here.

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