たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

OmegaConf まとめ

API docs がないので、全体を見通せるリストとして.

  • config <=> others I/O
    • from
      • empty (.create())
      • dictionary (.create({"key": "value"}))
      • list (.create([1, 2, 3]))
      • YAML string (.create("k1: v1 /n k2: v2"))
      • YAML file (.load(path))
      • dot-list (.from_dotlist(["k1=20", "nest.k2=200"]))
      • CLI args (.from_cli())
      • dataclass (.structured(DataClass))
    • to
      • YAML file (.save(config=conf, f=fp.name))
      • Python Pickle (pickle.dump(conf, fp))
  • config read/write
    • read
      • dot (conf.nest.leaf)
      • bracket (conf["nest"]["leaf"])
      • getter (conf.get("nest", "default value"))
    • write
      • dot (conf.nest.leaf = 1)
      • bracket (conf["nest"]["leaf"] = 1)
      • merge (.merge(conf1, conf2))

special value

  • missing ("???" & MISSING)
    • checker (.is_missing(conf, "field"))
  • interpolation ("${ref}")
    • checker (is_interpolatioin(conf, "field"))

Resolver

Interpolationと組み合わせると無限大の処理ができる.
resolverですべきなのか、普通にconfをプログラムで処理すべきなのかはケースバイケース.