gluonts.core.settings module¶
gluonts.core.settings¶
This modules offers a Settings-class, which allows to manage a global context.
The idea is to support a form of dependency injection, where instead of passing a concrete value along the call-chain, it is shared through the settings.
gluonts.env is a Settings.
Example:
from gluonts.core.settings import Settings
class MySettings(Settings):
debug: bool = False
settings = MySettings()
def fn():
if settings.debug:
print("In debug mode.")
with settings._let(debug=True):
# this will print the message
fn()
# no message will be printed
fn()
Another option is to inject the context to a function. This has the advantage, that you can still manually pass values, but use the context as a fallback:
@settings._inject("debug")
def fn(debug):
...
# this will use the value defined in the context
fn()
# but one can still set the value manually
fn(False)
Value access is possible with both getitem (setting[“name”]) and getattr (setting.name). To avoid possible name-conflicts, all methods on Settings use a leading underscore (e.g. settings._let). Consequently, keys are not allowed to start with an underscore.
Settings contains a default-dictionary, which can be set to directly and is used by _declare.
Additionally, it’s possible to declare a type, which is checked using pydantic. Whenever a new value is set, it is type-checked.