Skip to main content

A Domain-Driven Design (DDD) programming package for Python, similar to zope.interface

Project description

FivcGlue

A Domain-Driven Design (DDD) programming package for Python, similar to zope.interface.

๐ŸŽฏ Overview

FivcGlue provides a clean and intuitive way to implement Domain-Driven Design patterns in Python applications. It offers interfaces and implementations for common DDD building blocks, helping you structure your code following DDD principles.

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.10 or higher
  • UV package manager (recommended) or pip

Installation

With UV (recommended):

# Install with development dependencies
make install

# Or minimal installation
make install-min

# With YAML support
uv sync --extra yaml

With pip:

# Basic installation
pip install -e .

# With YAML support
pip install -e ".[yaml]"

# With development dependencies
pip install -e ".[dev,yaml]"

๐Ÿ“ฆ Features

FivcGlue provides core DDD building blocks:

  • Interfaces: Define contracts for your domain components
  • Configurations: Flexible configuration management (JSON, YAML)
  • Caching: In-memory and Redis-based caching implementations
  • Logging: Built-in logging utilities
  • Mutexes: Distributed locking with Redis support

๐Ÿ’ป Usage

Basic Example

from fivcglue.interfaces import IConfig
from fivcglue.implements import YAMLFileConfig

# Load configuration from YAML file
config = YAMLFileConfig("config.yml")
value = config.get("key", default="default_value")

Configuration Management

from fivcglue.implements import JSONFileConfig, YAMLFileConfig

# JSON configuration
json_config = JSONFileConfig("settings.json")

# YAML configuration (requires PyYAML)
yaml_config = YAMLFileConfig("settings.yml")

Caching

from fivcglue.implements import MemoryCache, RedisCache

# In-memory cache
cache = MemoryCache()
cache.set("key", "value", ttl=3600)
value = cache.get("key")

# Redis cache
redis_cache = RedisCache(host="localhost", port=6379)
redis_cache.set("key", "value", ttl=3600)

๐Ÿ“ Project Structure

src/fivcglue/
โ”œโ”€โ”€ interfaces/      # Interface definitions
โ”‚   โ”œโ”€โ”€ configs.py   # Configuration interfaces
โ”‚   โ”œโ”€โ”€ caches.py    # Cache interfaces
โ”‚   โ”œโ”€โ”€ loggers.py   # Logger interfaces
โ”‚   โ””โ”€โ”€ mutexes.py   # Mutex interfaces
โ”œโ”€โ”€ implements/      # Concrete implementations
โ”‚   โ”œโ”€โ”€ configs_jsonfile.py
โ”‚   โ”œโ”€โ”€ configs_yamlfile.py
โ”‚   โ”œโ”€โ”€ caches_mem.py
โ”‚   โ”œโ”€โ”€ caches_redis.py
โ”‚   โ”œโ”€โ”€ loggers_builtin.py
โ”‚   โ””โ”€โ”€ mutexes_redis.py
โ””โ”€โ”€ fixtures/        # Test fixtures

๐Ÿ› ๏ธ Development

Available Make Commands

make help        # Show all available commands
make install     # Install with dev dependencies
make install-min # Install minimal dependencies
make dev         # Install development dependencies
make lint        # Run code linting
make format      # Format code
make test        # Run tests
make test-cov    # Run tests with coverage
make clean       # Clean temporary files
make build       # Build distribution packages

Running Tests

# Run all tests
make test

# Run with coverage
make test-cov

# Run specific test file
uv run pytest tests/test_configs.py -v

Code Quality

# Lint code
make lint

# Format code
make format

๐Ÿ“š Documentation

For more detailed documentation, see the docs/ directory:

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

Development Setup

  1. Clone the repository
  2. Install dependencies: make install
  3. Run tests: make test
  4. Format code: make format
  5. Run linting: make lint

๐Ÿ“„ License

MIT License - see LICENSE file for details

๐Ÿ”— Links

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

fivcglue-0.1.0.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

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

fivcglue-0.1.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file fivcglue-0.1.0.tar.gz.

File metadata

  • Download URL: fivcglue-0.1.0.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.10

File hashes

Hashes for fivcglue-0.1.0.tar.gz
Algorithm Hash digest
SHA256 67f073c5f44ae1e89c6bdbca583b49369fcce4a5fb5a11963bedb4cbbafbcbb0
MD5 a60014be9387496afd8c784d1764c2d3
BLAKE2b-256 268de09d1d9b70cb9112ffb53cc8deb9e704fbf2c4f827fd9ba82a62a8b4b7fb

See more details on using hashes here.

File details

Details for the file fivcglue-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fivcglue-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.10

File hashes

Hashes for fivcglue-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 411af669534946aaa19cfc9162423b535da5753ffb57c334254c9abaf21bc226
MD5 cf81a6c8330a43017d3fb052510565b4
BLAKE2b-256 1cfe6d7a98eef49344e0b091a1e202ac367c4c4db96a12501fc2dfbce1cd6e37

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