pydanticからArgumentParserを作るライブラリをアップデートした
少し前に書いたライブラリであるpydantic-argparse-builderをアップデートした。
ライブラリの詳細については以下にまとめています。
qiita.com
もともと備えている機能は事前定義されているpydanticのオブジェクトにもとづいてPython標準のArgumentParserに引数を追加するだけでした。
しかし、人類は怠惰なので、ArgumentParserさえも内包してしまおうという考えに基づいて実装しています。
実装例は以下のとおりです。
from pydantic import BaseModel from pydantic_argparse_builder import command, main class Config(BaseModel): name: str age: int is_active: bool @command def launch(config: Config): print(config) if __name__ == "__main__": main()
上記は以下のコードと等価です。
from argparse import ArgumentParser from pydantic import BaseModel from pydantic_argparse_builder import build_parser class Config(BaseModel): name: str age: int is_active: bool def main(): parser = ArgumentParser() build_parser(parser, Config) args = parser.parse_args() launch(Config(**vars(args))) def launch(config: Config): print(config) if __name__ == "__main__": main()
このようにいい感じに短くできるのでやや使い勝手が向上するはずです。
もちろん、従来どおりの上記のような書き方もできるので、他のArgumentParserを拡張するライブラリとの併用や複雑なユースケースにも容易に対応することができます。