gluonts.core.settings module


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.


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

# no message will be printed

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:

def fn(debug):

# this will use the value defined in the context

# but one can still set the value manually

Value access is possible with both getitem (setting[“name”]) and getattr ( 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.

class gluonts.core.settings.Dependency(fn, dependencies)[source]

Bases: object

class gluonts.core.settings.Settings(*args, **kwargs)[source]

Bases: object

gluonts.core.settings.inject(settings, *args, **kwargs)[source]

inject(settings, …) is the same as settings._inject(…).

gluonts.core.settings.let(settings, **kwargs)[source]

let(settings, …) is the same as settings._let(…).