<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ja-argparse on Junpei Kawamoto</title>
    <link>https://www.jkawamoto.info/tags/ja-argparse/</link>
    <description>Recent content in ja-argparse on Junpei Kawamoto</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>junpei.kawamoto@acm.org (Junpei Kawamoto)</managingEditor>
    <webMaster>junpei.kawamoto@acm.org (Junpei Kawamoto)</webMaster>
    <copyright>&amp;copy; 2016-2017 Junpei Kawamoto</copyright>
    <lastBuildDate>Fri, 08 Jul 2016 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://www.jkawamoto.info/tags/ja-argparse/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>docstrings から argparse を補完する</title>
      <link>https://www.jkawamoto.info/blog-ja/dsargparse/</link>
      <pubDate>Fri, 08 Jul 2016 00:00:00 +0000</pubDate>
      <author>junpei.kawamoto@acm.org (Junpei Kawamoto)</author>
      <guid>https://www.jkawamoto.info/blog-ja/dsargparse/</guid>
      <description>本稿は Qiita 投稿記事 のバックアップです．
 はじめに python でコマンドラインツールを作る場合，引数のパーサーには click が便利． しかし，複雑なことをやろうとすると argparse の方が簡単な気がして使い分けている． 一方で，argparse を使うと description や help をサブコマンドや引数に与える必要がある． これらは，大体の場合 docstring と情報が重複していて二度手間である． そこで，docstring を使って argparse に情報を渡す方法を考えてみる．
なお，docstrings は Googleのスタイルガイドに従って書かれているとする．
プログラム全体の description コマンド本体の説明，つまり argparse.ArgumentParser の description 引数． これは main 関数のあるモジュールの docstring に書かれているはずである． よって，ArgumentParser の作成は，
parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawTextHelpFormatter)  とすれば良さそうである． なお，formatter_class に argparse.RawTextHelpFormatter を渡しているのは， これ以降設定する description や help から改行や空白を削除されるのを防ぐためである．
サブコマンドの description サブコマンドは,それを実行する関数とセットになっていると仮定する． つまり最低限，
a1_cmd = subparsers.add_parser(&amp;quot;a1&amp;quot;) a1_cmd.set_defaults(cmd=a1)  となっていると思う．であれば，サブコマンドを実装する関数，ここでは a1 が与えられれば，</description>
    </item>
    
  </channel>
</rss>