Tools
Partial
When creating multiple objects with common parameters, you can extract shared arguments into a
di.Partial object.
from dataclasses import dataclass
import di
@dataclass
class User:
firstname: str
lastname: str
company: str
company_address: str
# Define a partial configuration with shared attributes
user_partial = di.Partial[User](
company="Company",
company_address="123 Main St",
)
# Create instances with specific values
user_x = di.Transient[user_partial](
firstname="John",
lastname="Doe",
)
user_y = di.Transient[user_partial](
firstname="Jane",
lastname="Smith",
)
Testing
Mocking Dependencies
You can mock dependencies in a test context:
with di.patch(MainContainer.database, return_value=Database(uri="db://test_patch")):
print(di.provide(MainContainer.service).db.uri)
Within this context, Database is replaced with a mocked object.
Patching Dependencies
@di.patch(MainContainer.database, return_value=Database(uri="db://test_patch"))
def patched_test_function() -> None:
print(di.provide(MainContainer.service).db.uri)
Within this function, Database is replaced with a mocked object.