ipython / ipython/traitlets

Nested configurables

Offen
#421 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
653
Forks
217
Ø Merge
2 T. 21 Std.
Gemergte PRs (30 T.)
2

Beschreibung

We're looking to use traitlets to enforce type checking in the configuration of a coastal ocean model thetis (github.com/thetisproject/thetis).

Right now, we have a tree of configuration options. For example:
```
ModelOptions:
turbulence_model = "some_value"
turbulence_model_options = TurbulenceModelOptions
```

Right now, we just use nested dictionaries for this.

It seems like one would like to have a `Configurable` with traits that are themselves `Configurable` objects:

right now we use:

```python
class TurbulenceModelOptions(Configurable):
pass

class GLSOptions(TurbulenceModelOptions):
use_hyperviscosity = Bool()

class SmagorinskyOptions(TurbulenceModelOptions):
background_viscosity = Float()

class ModelOptions(Configurable):
turbulence_model = Enum(["gls", "smagorinsky"])
turbulence_model_options = Instance(TurbulenceModelOptions)
```

But generating (for example) rST doesn't recurse into the trait values, so the presentation of the options isn't right.

Are we doing this wrong? Is there some more obvious way of glueing together such a hierarchy?

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.