Full Example
App setup
from abc import ABC
from lagom import Container
#--------------------------------------------------------------
# Here is an example of some classes your application may be built from
DiceApiUrl = NewType("DiceApiUrl", str)
class RateLimitingConfig:
pass
class DiceClient(ABC):
pass
class HttpDiceClient(DiceClient):
def __init__(self, url: DiceApiUrl, limiting: RateLimitingConfig):
pass
class Game:
def __init__(self, dice_roller: DiceClient):
pass
#--------------------------------------------------------------
# Next we setup some definitions
container = Container()
# We need a specific url
container[DiceApiUrl] = DiceApiUrl("https://roll.diceapi.com")
# Wherever our code wants a DiceClient we get the http one
container[DiceClient] = HttpDiceClient
#--------------------------------------------------------------
# Now the container can build the game object
game = container[Game]