ipython / ipython/traitlets

Nested configurables

未关闭
#421 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
653
派生
217
平均合并
2 天 21 小时
30 天内合并 PR
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 摘要。