
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
py-dependency-injection
Advanced tools
A dependency injection library for Python.
py-dependency-injection
is inspired by the built-in dependency injection system in ASP.NET Core. It provides a lightweight and extensible way to manage dependencies in Python applications. By promoting constructor injection and supporting scoped lifetimes, it encourages clean architecture and makes testable, maintainable code the default.
This library is implemented in pure Python and has no runtime dependencies.
The library is compatible with the following Python versions:
$ pip install py-dependency-injection
Here's a quick example to get you started:
from dependency_injection.container import DependencyContainer
# Define an abstract payment gateway interface
class PaymentGateway:
def charge(self, amount: int, currency: str):
raise NotImplementedError()
# A concrete implementation using Stripe
class StripeGateway(PaymentGateway):
def charge(self, amount: int, currency: str):
print(f"Charging {amount} {currency} using Stripe...")
# A service that depends on the payment gateway
class CheckoutService:
def __init__(self, gateway: PaymentGateway):
self._gateway = gateway
def checkout(self):
self._gateway.charge(2000, "USD") # e.g. $20.00
# Get the default dependency container
container = DependencyContainer.get_instance()
# Register StripeGateway as a singleton (shared for the app's lifetime)
container.register_singleton(PaymentGateway, StripeGateway)
# Register CheckoutService as transient (new instance per resolve)
container.register_transient(CheckoutService)
# Resolve and use the service
checkout = container.resolve(CheckoutService)
checkout.checkout()
For more advanced usage and examples, please visit our readthedocs page.
py-dependency-injection
is released under the GPL 3 license. See LICENSE for more details.
You can find the source code for py-dependency-injection
on GitHub.
➡️ Full changelog: GitHub Releases
FAQs
A dependency injection library for Python.
We found that py-dependency-injection demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.