title: argparse "compulsory" optional arguments
body: <p>Python's <code>argparse</code> module has what are called 'optional' arguments. All arguments whose name starts with <code>-</code> or <code>--</code> are optional by default. Typically, compulsory arguments are positional, and hence when running the program, they are not explicitly <em>named</em>.</p>
  
  <p>For example, in a script which had:</p>
  
  <pre><code>parser.add_argument('language', help="Output language")
  </code></pre>
  
  <p>Invocations would look like:</p>
  
  <pre><code>$ hello-world czech
  </code></pre>
  
  <p>It may sometimes be nicer to have a compulsory argument passed by name (e.g. scripted invocations are easier to read this way), but still be compulsory. i.e.</p>
  
  <pre><code>$ hello-world --use-lang czech
  </code></pre>
  
  <p>How to achieve this? Named arguments are called 'optional' in the <code>argparse</code> documentation, which makes it sound like they <em>cannot</em> be compulsory. Is there a way to make them compulsory?</p>