Getting Started¶
Installation¶
For development:
Your First Container¶
from inversipy import Container, Scopes
# Define your services as plain classes
class Database:
def query(self, sql: str) -> list:
return ["result"]
class UserRepository:
def __init__(self, db: Database) -> None:
self.db = db
def get_users(self) -> list:
return self.db.query("SELECT * FROM users")
class UserService:
def __init__(self, repo: UserRepository) -> None:
self.repo = repo
def list_users(self) -> list:
return self.repo.get_users()
Create a container, register your services, and resolve:
container = Container()
container.register(Database, scope=Scopes.SINGLETON)
container.register(UserRepository)
container.register(UserService)
# Optional but recommended: validate all dependencies
container.validate()
# Resolve a service - all dependencies are injected automatically
service = container.get(UserService)
users = service.list_users()
The container analyzes type hints on __init__ methods to determine what to inject. No decorators, no configuration files, no special base classes needed.
What's Next?¶
- Container - Registration and resolution APIs
- Scopes - Singleton, Transient, and Request lifecycles
- Modules - Organize dependencies with access control
- FastAPI Integration - Use with web frameworks