Skip to main content

a13x-depinj

A lightweight, yet powerful dependency injection framework for Python applications.

Features

  • Simple and intuitive API
  • YAML-based component configuration
  • Lazy component initialization
  • Automatic dependency management
  • Component lifecycle management
  • Type hints support
  • Context manager interface

Installation

pip install a13x-depinj

Quick Start

  1. Define your components:
from dataclasses import dataclass

@dataclass
class DatabaseConfig:
    url: str
    port: int

class Database:
    def __init__(self, config: dict):
        self.config = DatabaseConfig(**config)
        
    def connect(self):
        # Implementation
        pass

class UserService:
    def __init__(self, config: dict):
        self.db = ComponentRegistry().get(Database)
  1. Create a deployment configuration (deployment.yaml):
components:
  - module: myapp.database
    class: Database
    config_path: database.config
  - module: myapp.services
    class: UserService
    config_path: services.user

where config_path references a starting entry in the config.yaml file:

services:
    user:
        name: "a13x"
        email: "a13x.h.cc@gmail.com"

database:
    config:
        db_path: "data/market_data.db"
        enable_wal: true
        pragma_synchronous: "NORMAL"
        pragma_journal_mode: "WAL"
        pragma_cache_size: -2000  # 2MB cache
        max_connections: 10
  1. Initialize the registry:
from a13x_depinj import ComponentRegistry, Config

# Load application configuration
config = Config.load_config('config.yaml')

# Initialize components
with ComponentRegistry.from_yaml(config, 'deployment.yaml') as registry:
    # Get component instances
    db = registry.get(Database)
    user_service = registry.get(UserService)
    
    # Use components
    db.connect()

Advanced Usage

Lazy Initialization

Components can be initialized lazily when first accessed:

registry = ComponentRegistry.from_yaml(config, 'deployment.yaml', lazy=True)

Component Lifecycle Management

Components can implement cleanup methods:

class Database:
    def cleanup(self):
        # Cleanup resources
        pass

The registry will automatically call cleanup when using the context manager or when unregistering components.

Type Hints

The registry supports type hints for better IDE integration:

from typing import TypeVar, Type

T = TypeVar('T')
registry = ComponentRegistry[T]()
db: Database = registry.get(Database)

Contributing

Contributions are welcome! Please check our Contributing Guidelines for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Release files for a13x-depinj 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for a13x-depinj 0.2.0
File Size Uploaded
a13x_depinj-0.2.0.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for a13x-depinj 0.2.0
File Interpreter ABI Platform
a13x_depinj-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.0 kB

Release files / a13x_depinj-0.2.0.tar.gz

Download URL a13x_depinj-0.2.0.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8a15c6fe5b4c9a7a6825418933a2148c17a12865c636658d879237ef43b07836
BLAKE2b-256 checksum
How to use checksums
9a9897b166566f2b88944662b8abcf652f182da9abdfcdf0481b3e39d6276d54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.12.9 Linux/6.11.0-19-generic

Release files / a13x_depinj-0.2.0-py3-none-any.whl

Download URL a13x_depinj-0.2.0-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d9b44cc508458feb0511d87d46e8a2b31f29340c49b9c86560899ac238772f4
BLAKE2b-256 checksum
How to use checksums
88212934fa878d63f43ce2b829ef632d0c238f4185d38f3bb600cf03614ad292
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.12.9 Linux/6.11.0-19-generic

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release 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