Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
ServiceRegistry
✓ from wired import ServiceRegistry
The primary class for creating a container.
injectable
✓ from wired import injectable
✗ from wired.injectable import injectable
injectable is a module, not a subpackage; the decorator is imported as 'from wired import injectable'.
dataclass
✓ from wired import dataclass
✗ from wired.dataclasses import dataclass
The dataclass decorator is in the 'wired' package directly.
Create a service registry, register an injectable class, and retrieve it from a container.
from wired import ServiceRegistry, injectable
# Define a service
@injectable()
class Greeter:
def __init__(self, greeting: str = "Hello"):
self.greeting = greeting
def greet(self, name: str) -> str:
return f"{self.greeting}, {name}!"
# Set up registry
registry = ServiceRegistry()
registry.register(Greeter)
# Get a container and use
container = registry.create_container()
greeter = container.get(Greeter)
print(greeter.greet("World"))
Errors
Common errors & fixes
TypeError: can't inject type 'xyz'; no factory registered
The service class was not registered in the ServiceRegistry.
fixCall registry.register(YourClass) before creating the container.
wired.exceptions.CannotInject: Cannot inject <class '__main__.MyService'> - no @injectable decorator
Class missing @injectable() decorator.
fixApply @injectable() to the class definition.
Upgrade
Version history
0.4latest on PyPI · released Feb 23, 2024
Audit
Dependencies
wiredrequiredContains the IoC container, service registry, and decorators.