Skip to main content

Architecture validation library for Python projects

Project description

PyArchRules Logo

License: MIT Python 3.12+

Features

  • 🏗️ Structure validation - enforce directory tree requirements
  • 🔗 Dependency rules - control module imports (e.g., api -> domain)
  • 🎯 DSL & Config - use Python DSL or TOML configuration
  • 🚀 Zero setup - works with pyproject.toml
  • 🔍 CLI & API - integrate into CI/CD or use programmatically

Installation

pip install pyarchrules

Quick Start

# Initialize
pyarchrules init-project

# Check architecture
pyarchrules check

Configuration Example

[tool.pyarchrules]
project_name = "myapp"

[tool.pyarchrules.services.backend]
path = "src/backend"

# Enforce directory structure
tree = ["api", "domain", "infra"]
tree_strict = true

# Control dependencies (api can import from domain)
dependencies = ["api -> domain", "domain -> infra"]

Python API

from pyarchrules import PyArchRules

rules = PyArchRules()

# DSL validation
rules.for_service("backend") \
    .must_contain_folders(["api", "domain"])

result = rules.validate()

CLI Commands

Command Description
pyarchrules init-project Initialize configuration
pyarchrules check Validate architecture
pyarchrules add-service NAME PATH Add service
pyarchrules list-services List all services

Use Cases

Monorepos - enforce boundaries between services

[tool.pyarchrules.services.auth]
path = "services/auth"
dependencies = ["auth -> shared"]

Clean Architecture - validate layer dependencies

dependencies = [
    "api -> application",
    "application -> domain"
]

Microservices - ensure consistent structure

tree = ["api", "domain", "infrastructure"]
tree_strict = true

Development

uv pip install -e ".[dev]"
make test
make lint

Status

⚠️ Alpha - API may change before 1.0 release

License

MIT

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

pyarchrules-0.0.1a2.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

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

pyarchrules-0.0.1a2-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file pyarchrules-0.0.1a2.tar.gz.

File metadata

  • Download URL: pyarchrules-0.0.1a2.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyarchrules-0.0.1a2.tar.gz
Algorithm Hash digest
SHA256 c4ead86f7f2678c5a86275aafb3f1081ec699d74423b4312b623984b833a5122
MD5 292ff8bea9dbd1fbd82a75a917ff152b
BLAKE2b-256 019bd83728eea80f414d76d911791f427adedb609b9b843a525de101e6a5c4df

See more details on using hashes here.

File details

Details for the file pyarchrules-0.0.1a2-py3-none-any.whl.

File metadata

  • Download URL: pyarchrules-0.0.1a2-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyarchrules-0.0.1a2-py3-none-any.whl
Algorithm Hash digest
SHA256 276ad3a335d6b3671ca731ade3f5d4c1cb6c5a9f7eb22e80cdeeaecd947b4b39
MD5 c7505f26c690099c9e0ecd9a63c3ff39
BLAKE2b-256 b5fd434bb282d79ffc4b07b37d449941aec51ead07763e5bc2cd008567454de2

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