Skip to main content

.NET Core Dependency Injection for Python

Project description

WD-DI: .NET Style Dependency Injection for Python

PyPI version Build Status

WD-DI brings the robust and flexible dependency injection patterns of .NET to your Python applications, with no external library dependencies—just Python's standard library.

Full documentation can be found at your-docs-site.com (or in the /docs directory).


Why WD-DI?

  • Simplified Dependency Management: Effortlessly manage object creation and lifecycles.
  • Enhanced Testability: Easily mock dependencies for robust unit tests.
  • Modular Architecture: Build loosely coupled, maintainable, and scalable applications.
  • Familiar Patterns: Leverage .NET-inspired DI concepts like service lifetimes (Singleton, Scoped, Transient), constructor injection, and the Options pattern for configuration.
  • Pythonic and Lightweight: Clean, intuitive API that integrates smoothly into your Python projects.

Installation

pip install wd-di

Quick Example: The Power of WD-DI

Experience clean, decoupled code with intuitive type-hinted dependency resolution:

from wd.di import ServiceCollection

# 1. Create a service collection
services = ServiceCollection()

# 2. Define your services (interfaces optional but recommended)
class IEmailService:
    def send(self, message: str): ...

@services.singleton(IEmailService) # Register EmailService as a singleton for IEmailService
class EmailService(IEmailService):
    def send(self, message: str):
        print(f"Sending email: {message}")

@services.transient() # Register NotifierService as transient (new instance each time)
class NotifierService:
    def __init__(self, emailer: IEmailService): # Dependency injected here!
        self._emailer = emailer

    def notify_admin(self, alert: str):
        self._emailer.send(f"Admin Alert: {alert}")

# 3. Build the provider and resolve your top-level service
provider = services.build_service_provider()
notifier = provider.get_service(NotifierService) # Type is inferred!

# 4. Use your services
notifier.notify_admin("System critical!")
# Output: Sending email: Admin Alert: System critical!

Dive into the full documentation to explore service lifetimes, configuration, middleware, and more!


Contributing

Contributions are welcome! Please see the main documentation site for details on how to contribute, report issues, or request features.


License

This project is licensed under the terms of the LICENSE file included in the repository.

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

wd_di-0.1.8.tar.gz (91.4 kB view details)

Uploaded Source

Built Distribution

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

wd_di-0.1.8-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file wd_di-0.1.8.tar.gz.

File metadata

  • Download URL: wd_di-0.1.8.tar.gz
  • Upload date:
  • Size: 91.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for wd_di-0.1.8.tar.gz
Algorithm Hash digest
SHA256 aa5f4cd1c74c7c2910f2aa54191cdda10c5145be12032d179121c44121bdda7f
MD5 9859e0a17e62498ea25c687a651b61af
BLAKE2b-256 126376af8d88e352875b3880ee3533f30a5f163e3595abcc1bcf0f7be6fda470

See more details on using hashes here.

File details

Details for the file wd_di-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: wd_di-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for wd_di-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 8f7814cc5c9ea3e0e530b100249de18a003dffba28e6bc4a04a3d2ac55b32b17
MD5 0dee2842c862bdeb054f90cc865648de
BLAKE2b-256 74f8fb0e31e8b78b81f389600c3aa9a8d9a022f9406ea0ca8a86503c3158f68b

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