<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: optfunc</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/optfunc.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2009-12-09T08:41:02+00:00</updated><author><name>Simon Willison</name></author><entry><title>Fixing Django Management Commands</title><link href="https://simonwillison.net/2009/Dec/9/zachary/#atom-tag" rel="alternate"/><published>2009-12-09T08:41:02+00:00</published><updated>2009-12-09T08:41:02+00:00</updated><id>https://simonwillison.net/2009/Dec/9/zachary/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.zacharyvoase.com/post/275566873"&gt;Fixing Django Management Commands&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Zachary Voase proposes dramatically improving Django’s management command API for Django 1.3. I’m in favour—management commands are one of the only APIs in Django that I have to look up every single time I use. My optfunc library was written partially with management commands in mind—Zachary favours the argparse library.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/argparse"&gt;argparse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/managementcommands"&gt;managementcommands&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/optfunc"&gt;optfunc&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zachary-voase"&gt;zachary-voase&lt;/a&gt;&lt;/p&gt;



</summary><category term="argparse"/><category term="django"/><category term="managementcommands"/><category term="optfunc"/><category term="python"/><category term="zachary-voase"/></entry><entry><title>Perl 6: The MAIN sub</title><link href="https://simonwillison.net/2009/May/28/perl6/#atom-tag" rel="alternate"/><published>2009-05-28T21:32:24+00:00</published><updated>2009-05-28T21:32:24+00:00</updated><id>https://simonwillison.net/2009/May/28/perl6/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://perlgeek.de/blog-en/perl-5-to-6/14-main-sub.html"&gt;Perl 6: The MAIN sub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
"Calling subs and running a typical Unix program from the command line is visually very similar: you can have positional, optional and named arguments." - that's exactly what I was thinking when I came up with &lt;a href="https://github.com/simonw/optfunc"&gt;optfunc&lt;/a&gt;.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://simonwillison.net/2009/May/28/optfunc/#c45364"&gt;Keith Devens&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cli"&gt;cli&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/optfunc"&gt;optfunc&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/perl"&gt;perl&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/perl6"&gt;perl6&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unix"&gt;unix&lt;/a&gt;&lt;/p&gt;



</summary><category term="cli"/><category term="optfunc"/><category term="perl"/><category term="perl6"/><category term="python"/><category term="unix"/></entry><entry><title>optfunc</title><link href="https://simonwillison.net/2009/May/28/optfunc/#atom-tag" rel="alternate"/><published>2009-05-28T19:38:14+00:00</published><updated>2009-05-28T19:38:14+00:00</updated><id>https://simonwillison.net/2009/May/28/optfunc/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://github.com/simonw/optfunc"&gt;optfunc&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Command line parsing libraries in Python such as optparse frustrate me because I can never remember how to use them without consulting the manual. optfunc is a new experimental interface to optparse which works by introspecting a function definition (including its arguments and their default values) and using that to construct a command line argument parser. Feedback and suggestions welcome!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cli"&gt;cli&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/introspection"&gt;introspection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/optfunc"&gt;optfunc&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/optparse"&gt;optparse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="cli"/><category term="github"/><category term="introspection"/><category term="optfunc"/><category term="optparse"/><category term="projects"/><category term="python"/></entry></feed>