Tribler/py-ipv8

Update the community settings documentation

qstokkink opened this issue · 0 comments

The documentation still encourages the old lengthy and error-prone way of passing community settings to Community instances.

class MyCommunity(Community):
def __init__(self, *args, **kwargs):
# Create-if-Missing Pattern
settings = kwargs.pop('settings', MyCommunitySettings())
if isinstance(settings, dict):
# Convert user dict to settings object
settings = MyCommunitySettings.from_dict(settings)
# Create-if-Missing Pattern
self.value_manager = kwargs.pop('value_manager',
ValueManager(settings.value_manager))
super().__init(*args, **kwargs)

This has recently been formalized and should be replaced with:

class MyCommunitySettings(CommunitySettings):
    value_manager: ValueManager | None = None

class MyCommunity(Community):
    settings_class = MyCommunitySettings

    def __init__(self, settings: MyCommunitySettings) -> None:
        super().__init__(settings)
        self.value_manager = settings.value_manager or ValueManager()