An elegant way is using typed-settings
and ipaddress
.
- Install
typed-settings
: pip install typed-settings
.
- Create a
toml
file named config.toml
.
[managers]
ip = ["1.2.3.4"]
[workers]
ip = ["2.3.45.5", "3.5.6.7", "5.7.8.9"]
- Define the data model class and load it.
import ipaddress
import typed_settings as ts
@ts.settings(frozen=True)
class Mangers:
ip = ts.option(converter=lambda l: [ipaddress.ip_address(i) for i in l])
@ts.settings(frozen=True)
class Workers:
ip = ts.option(converter=lambda l: [ipaddress.ip_address(i) for i in l])
managers_settings = ts.load(Mangers, appname="managers", config_files=["config.toml"])
workers_settings = ts.load(Workers, appname="workers", config_files=["config.toml"])
print(managers_settings)
print(workers_settings)
# Mangers(ip=[IPv4Address('1.2.3.4')])
# Workers(ip=[IPv4Address('2.3.45.5'), IPv4Address('3.5.6.7'), IPv4Address('5.7.8.9')])