Skip to main content

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 datetime import timedelta
from fivcglue.implements.caches_mem import CacheImpl as MemoryCacheImpl
from fivcglue.implements.caches_redis import CacheImpl as RedisCacheImpl

# In-memory cache
cache = MemoryCacheImpl(_component_site=None, max_size=10000)
cache.set_value("key", b"value", expire=timedelta(hours=1))
value = cache.get_value("key")

# Redis cache (requires redis package)
redis_cache = RedisCacheImpl(_component_site=None, host="localhost", port=6379)
redis_cache.set_value("key", b"value", expire=timedelta(hours=1))

📁 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

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.7.tar.gz (39.2 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.7-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fivcglue-0.1.7.tar.gz
Algorithm Hash digest
SHA256 ce54c129053620d20cc82be563893a58e4e97fa2266af5ef600ed2bd8ce9b368
MD5 c9859319bd00b6dc8812281dbeaeeed8
BLAKE2b-256 9fcb22d5537e769d5d7f3d48e7a46eb9614ba79a458b98c70551b716bffcb8b2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for fivcglue-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 cceb0a228f44035165baa27bb005cf7ecb4f607d945eb09faf9b14c3a9ac2995
MD5 a36d0d156886c9a634b6f8e13597656d
BLAKE2b-256 01c51c5bb9f4ee290709b6eec79a7010436a0f02de26017c63c8d8d2ae8c2e0b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.8

2 files

This release

0.1.7 This release

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page