<div dir="ltr">Hi stdlib-sig,<div><br><div>I wanted to ease exposing functions to the command-line using python 3 features and the result is <a href="http://code.google.com/p/pyopt/">http://code.google.com/p/pyopt/</a></div>
<div><br></div><div><a href="http://code.google.com/p/pyopt/"></a>I think this could be good stuff for the standard library and I&#39;m not sure how to go about it, should I work on integrating with optparse/optik (is that project still active?) or should this be a separate module?</div>
<div><br></div><div>This is an example usage of pyopt.0.71:</div><div>---</div><div><div>import pyopt</div><div>expose = pyopt.Exposer()</div><div><br></div><div>@expose.args</div><div>def possy(archer:str, boulder:float, magic:int=42):</div>
<div>    &quot;&quot;&quot;Shows an example positional command-line function.</div><div>        archer - is a str</div><div>        boulder - should be a float</div><div>        magic - a number that is magical&quot;&quot;&quot;</div>
<div>    print(repr(archer), repr(boulder), repr(magic))</div><div><br></div><div>if __name__ == &quot;__main__&quot;:</div><div>    expose.run()</div><div><br></div><div>---</div><div>And this is what you get:</div><div>
<br></div><div><div>C:\&gt;example.py -h</div><div>Usage: example.py archer boulder [magic]</div><div>        Shows an example positional command-line function.</div><div>        archer - is a str</div><div>        boulder - should be a float</div>
<div>        magic - a number that is magical</div><div><br></div><div>C:\&gt;example.py 1 2 3</div><div>&#39;1&#39; 2.0 3</div><div><br></div><div>C:\&gt;example.py 1 2</div><div>&#39;1&#39; 2.0 42</div><div><br></div><div>
C:\&gt;example.py 5</div><div>2 arguments required, got only 1. Run with ? or -h for more help.</div><div>---</div></div><br></div><div><div>For more examples and functionality (like multiple functions) look at:</div><div>
<a href="http://code.google.com/p/pyopt/wiki/Examples">http://code.google.com/p/pyopt/wiki/Examples</a></div><div><br></div><div>Notes:</div><div>1. I know the names aren&#39;t perfect (module pyopt, class Exposer and the decorator methods args/kwargs/mixed). Please reply if you have better names in mind.</div>
<div>2. I realize this isn&#39;t as flexible as optparse and passing options around multiple different sub-functions is harder. This module is strictly a quick and clean solution to a very day-to-day use case: bridging python functions to command-line.</div>
<div>3. Feedback would be greatly appreciated. I would like to know if I&#39;m the only one who&#39;s tired of sys.argv/optparse boilerplate.</div><div><br></div>-- <br>Yuv<br><br>
</div></div></div>