ipython / ipython/traitlets

Nested configurables

オープン
#421 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
653
フォーク
217
平均マージ
2日 21時間
マージ済み PR(30日)
2

説明

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?

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。