Changeset 781
- Timestamp:
- 08/01/07 21:21:25 (1 year ago)
- Files:
-
- pyrun/trunk/ChangeLog (modified) (1 diff)
- pyrun/trunk/README.txt (modified) (2 diffs)
- pyrun/trunk/command_line_interface.rst (modified) (3 diffs)
- pyrun/trunk/examples/discover_and_run.rst (modified) (1 diff)
- pyrun/trunk/pkg-info.rst (modified) (1 diff)
- pyrun/trunk/pyrun.html (modified) (7 diffs)
- pyrun/trunk/pyrun.py (modified) (1 diff)
- pyrun/trunk/pyrun.rst (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pyrun/trunk/ChangeLog
r779 r781 1 1 ChangeLog 2 2 ~~~~~~~~~ 3 4 0.1d 5 * documentation tidy up 3 6 4 7 0.1c pyrun/trunk/README.txt
r759 r781 2 2 ~~~~~ 3 3 4 You can access the most commonly useful features of pyrun, without installing 5 the package, by running the pyrun.py file directly. 4 .. _distutils python terms: http://docs.python.org/dist/python-terms.html 5 .. _distutils distutils terms: http://docs.python.org/dist/distutils-terms.html 6 .. _setuptools terms: http://mail.python.org/pipermail/distutils-sig/2005-June/004652.html 6 7 7 You can safely move individual top level python modules distributed in this 8 package to any location on the file system you desire. Or you can run them 9 directly from where ever they were downloaded to. Each top level python module 10 in this package is self contained. 8 You can access the most commonly useful features of `pyrun`, without installing 9 the project, by running the ``pyrun.py`` file directly. 11 10 12 11 For example, the following:: … … 21 20 order you list them controls the order in which the path extension entries are 22 21 built. The resulting path will not contain any duplicates. Each entry in the 23 path extension will be a legitimate import path ; Ie.,22 path extension will be a legitimate import path. 24 23 25 * It is a directory on the file system with one or more child directories 26 which contain __init__.py files 27 * OR It is the dirname() of a python module file you explicitly listed, 28 * OR It is an egg path 29 30 If none of the non option arguments identify a python module file then pyrun 31 will simply print the path it has discovered and exit. If one or more python 32 module files are included in the arguments then pyrun will 'run' the first one 33 listed. `sys.path` and `sys.argv` are adjusted so that your module is the 34 __main__ entry point upon execution and the discovered path is available for 35 resolving its imports. 36 37 If the module you are running does not naturally accept a non option argument 38 immediately after the module name then you can use `--` to explicitly delimit 39 the end of the arguments to pyrun. For example, the distribution 40 archives for *the pyrun package* are often generated like this:: 41 42 ``python pyrun.py ~/devel/libs setup.py -- sdist`` 43 44 `~/devel/libs` just happens to be a directory whose sub tree contains a 45 suitable docutils. ``PYTHONPATH=~/devel/libs python setup.py sdist`` would not 46 achieve the same results because there are mixture of eggs and plain source 47 trees involved. 48 49 For egg paths only the *best* version of each egg is allowed onto the extended 50 path, and only if the egg is compatible with the current `sys.executable` 51 version. The measure of `best egg` uses the same algorithm as used by 52 the pkg_resources.py module distributed by the setuptools project. 53 54 NOTE: The current version does not filter out incompatible `platforms` for eggs 55 that contain c extensions - see `pyrun.filter_best_eggs` if you have time on 56 your hands, its not to much work to add this check. 24 Note: 25 A setup.py file is provided - with suitable egg entry point declarations 26 - if you prefer this. 57 27 58 28 29 For each argument which identifies a python file `pyrun` will locate the root 30 package directory and add that to the path. The *absolute* dotted module name 31 of the first python file you identify in this way is the module that will, by 32 default, be executed as __main__. You can explicitly override this choice by 33 using pyrun's ``-m`` option. 34 35 Note: 36 root package is the parent directory of the "top most package" see 37 `distutils python terms`_ and `distutils distutils terms`_ 38 39 40 The delimiter between the `pyrun` arguments and options and the options for the 41 target module is the first non option argument encountered after the discovery 42 paths. If that option is a `pyrun` option (see ``pyrun --help`` for the list) 43 then `pyrun` takes it and passes all remaining arguments to the target module 44 in a suitably massaged ``sys.argv``. 45 46 If the target module takes arguments but does not naturally accept an option 47 as its first argument (python setup.py install is the classic example) then 48 you can artificially terminate the `pyrun` options with ``--``. 49 50 For example it is possible to run the setup script of the `pyrun` project in 51 the following ways 52 53 * If you have setup tools installed:: 54 55 python setup.py bdist_egg 56 57 * If your python distribution has *not* removed distutls from the python 58 standard library:: 59 60 python setup.py sdist 61 62 * If you have a copy of the setuptools egg in ``../python/eggs``:: 63 64 python pyrun.py ../python/eggs -m setup bdist_egg 65 python pyrun.py ../python/eggs setup.py -- bdist_egg 66 67 68 If you have a directory which contains a docutils source tree or installation 69 then adding that to the discovery path will let the setup.py script build 70 *this* documentation. 71 72 If none of the non option arguments identify a python module file *and* you 73 dont explicitly select one using ``-m`` then `pyrun` will simply print the path 74 it has discovered and exit. You can force `just print the path` using ``-p`` 75 or ``-P`` 76 77 `pyrun` is reasonably smart in respect of python egg distributions. When 78 multiple egg distributions of the same project are found on the discovery path 79 only the *best* version found is included in the path extension. Eggs which are 80 not compatible with the current python interpreter are ignored. The measure of 81 `best egg for a project` uses the same algorithm as used by the 82 pkg_resources.py module distributed by the setuptools project. 83 84 Note: 85 The current version does not filter out incompatible `platforms` for eggs 86 that contain c extensions - see `pyrun.filter_best_eggs` if you have time on 87 your hands, its not to much work to add this check. 88 59 89 The issue tracker for this package can be found at: 60 http://trac.wiretooth.com/open/. When opening a ticket please assign it to the61 'pyrun' component or mention pyrun in the summary.62 90 91 http://trac.wiretooth.com/public/wiki/pyrun 92 93 When opening a ticket please assign it to the `pyrun` component or, at least, 94 mention `pyrun` in your ticket summary. 95 pyrun/trunk/command_line_interface.rst
r771 r781 1 Command line interface 2 ~~~~~~~~~~~~~~~~~~~~~~ 3 4 Usage: pyrun.py [-nidP] [BASEPATH 1] [BASEPATH 2] ... [BASEPATH n] 5 [-m mod.name | -c STATEMENT | -C STATEMENT | '--'] [TARGET-OPTIONS] 1 Usage: pyrun.py [-nidDpP] [BASEPATH(s)][-m mod.name | '--'] [TARGET-OPTIONS] 6 2 7 3 In most cases the solo '--' is not required. It tends to be useful when you … … 25 21 -d DEBUG session. Prepare for execution, but start a pdb session 26 22 using `pdb.set_trace`. 23 -D POSTMORTEM debugging. If the target raises an exception, start 24 a postmortem pdb debugging session. 27 25 -i INTERACTIVE session with prepared sys.argv and sys.path. 28 26 -c STATEMENT Update sys.argv and sys.path then execute statement in a new … … 30 28 -C STATEMENT Update sys.argv and sys.path then execute statement in the 31 29 context of the selected module. [NYI] 32 33 module discovery and implicit selection34 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~35 36 If you include an explicit reference to a python source file in the discovery37 path you are acheiving two things:38 39 1. You select it as the `implicit` run target40 2. You `discover` the appropriate path to add to sys.path in order for the41 identified module to be imported using its *fully* qualified module name.42 43 All modules referenced on the command line like this are considered for path44 discovery. The implicit `pyrun target` is *always* the *first* module45 reference.46 47 To *explicitly* select the module to run, terminate the pyrun arguments with48 ``-m fully.qualified.module.name``. Replacing `fully.qualified.module.name`49 with the module you wish to run.50 51 simple examples52 ~~~~~~~~~~~~~~~53 54 Given::55 56 ~/foo/__init__.py57 ~/foo/bar/__init__.py58 ~/foo/mod.py59 60 61 Implicit selection of a sub module::62 63 pyrun ~/foo/bar/__init__.py64 ^ ^65 | |66 | .67 | ------- * module file68 .69 -----------------------* `sys.path` entry70 71 pyrun ~/foo/mod.py72 ^ ^73 | |74 | .75 | ---------------- * module file76 .77 -----------------------* `sys.path` entry78 79 The ``python -m`` form of the above examples would be::80 81 PYTHONPATH=~/foo python -m foo.bar82 83 PYTHONPATH=~/foo python -m foo.mod84 85 For examples as simple as this one the only potential advantage of pyrun is the86 convenience of not having to work with `SHELL` environment variables.87 88 Things get more interesting when your `discovery` path includes more elements.89 pyrun/trunk/examples/discover_and_run.rst
r760 r781 1 pyrun - module api2 ~~~~~~~~~~~~~~~~~~3 1 4 discover_and_run 5 ................ 2 pyrun.discover_and_run, pyrun.discover_path 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 4 7 5 All of the command line programs provided by this package are essentially thin 8 wrappers around the ` pyrun.discover_and_run` function. This section provides9 `doctest` based discussion and examples. These examples are also part of the10 pyrun test suite.6 wrappers around the `discover_and_run` or `discover_path` functions. This 7 section provides `doctest` based discussion and examples. These examples are 8 also part of the pyrun test suite. 11 9 12 10 Lets setup a fake set of python packages and use it to illustrate some basics. pyrun/trunk/pkg-info.rst
r779 r781 1 1 :License: MIT 2 2 :Name: pyrun 3 :Version: 0.1 c3 :Version: 0.1d.dev 4 4 :Author: Robin Bryce 5 5 :Author-email: robinbryce@gmail.com pyrun/trunk/pyrun.html
r765 r781 300 300 </tr> 301 301 <tr><th class="docinfo-name">Version:</th> 302 <td>0.1d ev</td></tr>302 <td>0.1d.dev</td></tr> 303 303 <tr><th class="docinfo-name">Author:</th> 304 304 <td>Robin Bryce</td></tr> … … 338 338 <li><a class="reference" href="#installation" id="id2" name="id2">Installation</a></li> 339 339 <li><a class="reference" href="#command-line-interface" id="id3" name="id3">Command line interface</a></li> 340 <li><a class="reference" href="#module-discovery-and-implicit-selection" id="id4" name="id4">module discovery and implicit selection</a></li> 341 <li><a class="reference" href="#simple-examples" id="id5" name="id5">simple examples</a></li> 342 <li><a class="reference" href="#pyrun-module-api" id="id6" name="id6">pyrun - module api</a><ul> 343 <li><a class="reference" href="#discover-and-run" id="id7" name="id7">discover_and_run</a></li> 344 </ul> 345 </li> 346 <li><a class="reference" href="#changelog" id="id8" name="id8">ChangeLog</a></li> 340 <li><a class="reference" href="#pyrun-discover-and-run-pyrun-discover-path" id="id4" name="id4">pyrun.discover_and_run, pyrun.discover_path</a></li> 341 <li><a class="reference" href="#changelog" id="id5" name="id5">ChangeLog</a></li> 347 342 </ul> 348 343 </div> 349 344 <div class="section"> 350 345 <h1><a class="toc-backref" href="#id1" id="pyrun" name="pyrun">pyrun</a></h1> 351 <p>You can access the most commonly useful features of pyrun, without installing 352 the package, by running the pyrun.py file directly.</p> 353 <p>You can safely move individual top level python modules distributed in this 354 package to any location on the file system you desire. Or you can run them 355 directly from where ever they were downloaded to. Each top level python module 356 in this package is self contained.</p> 346 <p>You can access the most commonly useful features of <cite>pyrun</cite>, without installing 347 the project, by running the <tt class="docutils literal"><span class="pre">pyrun.py</span></tt> file directly.</p> 357 348 <p>For example, the following:</p> 358 349 <pre class="literal-block"> … … 366 357 order you list them controls the order in which the path extension entries are 367 358 built. The resulting path will not contain any duplicates. Each entry in the 368 path extension will be a legitimate import path; Ie.,</p> 369 <blockquote> 370 <ul class="simple"> 371 <li>It is a directory on the file system with one or more child directories 372 which contain __init__.py files</li> 373 <li>OR It is the dirname() of a python module file you explicitly listed,</li> 374 <li>OR It is an egg path</li> 359 path extension will be a legitimate import path.</p> 360 <dl class="docutils"> 361 <dt>Note:</dt> 362 <dd>A setup.py file is provided - with suitable egg entry point declarations 363 - if you prefer this.</dd> 364 </dl> 365 <p>For each argument which identifies a python file <cite>pyrun</cite> will locate the root 366 package directory and add that to the path. The <em>absolute</em> dotted module name 367 of the first python file you identify in this way is the module that will, by 368 default, be executed as __main__. You can explicitly override this choice by 369 using pyrun's <tt class="docutils literal"><span class="pre">-m</span></tt> option.</p> 370 <dl class="docutils"> 371 <dt>Note:</dt> 372 <dd>root package is the parent directory of the "top most package" see 373 <a class="reference" href="http://docs.python.org/dist/python-terms.html">distutils python terms</a> and <a class="reference" href="http://docs.python.org/dist/distutils-terms.html">distutils distutils terms</a></dd> 374 </dl> 375 <p>The delimiter between the <cite>pyrun</cite> arguments and options and the options for the 376 target module is the first non option argument encountered after the discovery 377 paths. If that option is a <cite>pyrun</cite> option (see <tt class="docutils literal"><span class="pre">pyrun</span> <span class="pre">--help</span></tt> for the list) 378 then <cite>pyrun</cite> takes it and passes all remaining arguments to the target module 379 in a suitably massaged <tt class="docutils literal"><span class="pre">sys.argv</span></tt>.</p> 380 <p>If the target module takes arguments but does not naturally accept an option 381 as its first argument (python setup.py install is the classic example) then 382 you can artificially terminate the <cite>pyrun</cite> options with <tt class="docutils literal"><span class="pre">--</span></tt>.</p> 383 <p>For example it is possible to run the setup script of the <cite>pyrun</cite> project in 384 the following ways</p> 385 <blockquote> 386 <ul> 387 <li><p class="first">If you have setup tools installed:</p> 388 <pre class="literal-block"> 389 python setup.py bdist_egg 390 </pre> 391 </li> 392 <li><p class="first">If your python distribution has <em>not</em> removed distutls from the python 393 standard library:</p> 394 <pre class="literal-block"> 395 python setup.py sdist 396 </pre> 397 </li> 398 <li><p class="first">If you have a copy of the setuptools egg in <tt class="docutils literal"><span class="pre">../python/eggs</span></tt>:</p> 399 <pre class="literal-block"> 400 python pyrun.py ../python/eggs -m setup bdist_egg 401 python pyrun.py ../python/eggs setup.py -- bdist_egg 402 </pre> 403 </li> 375 404 </ul> 376 405 </blockquote> 377 <p>If none of the non option arguments identify a python module file then pyrun 378 will simply print the path it has discovered and exit. If one or more python 379 module files are included in the arguments then pyrun will 'run' the first one 380 listed. <cite>sys.path</cite> and <cite>sys.argv</cite> are adjusted so that your module is the 381 __main__ entry point upon execution and the discovered path is available for 382 resolving its imports.</p> 383 <p>If the module you are running does not naturally accept a non option argument 384 immediately after the module name then you can use <cite>--</cite> to explicitly delimit 385 the end of the arguments to pyrun. For example, the distribution 386 archives for <em>the pyrun package</em> are often generated like this:</p> 387 <pre class="literal-block"> 388 ``python pyrun.py ~/devel/libs setup.py -- sdist`` 389 </pre> 390 <p><cite>~/devel/libs</cite> just happens to be a directory whose sub tree contains a 391 suitable docutils. <tt class="docutils literal"><span class="pre">PYTHONPATH=~/devel/libs</span> <span class="pre">python</span> <span class="pre">setup.py</span> <span class="pre">sdist</span></tt> would not 392 achieve the same results because there are mixture of eggs and plain source 393 trees involved.</p> 394 <p>For egg paths only the <em>best</em> version of each egg is allowed onto the extended 395 path, and only if the egg is compatible with the current <cite>sys.executable</cite> 396 version. The measure of <cite>best egg</cite> uses the same algorithm as used by 397 the pkg_resources.py module distributed by the setuptools project.</p> 398 <p>NOTE: The current version does not filter out incompatible <cite>platforms</cite> for eggs 406 <p>If you have a directory which contains a docutils source tree or installation 407 then adding that to the discovery path will let the setup.py script build 408 <em>this</em> documentation.</p> 409 <p>If none of the non option arguments identify a python module file <em>and</em> you 410 dont explicitly select one using <tt class="docutils literal"><span class="pre">-m</span></tt> then <cite>pyrun</cite> will simply print the path 411 it has discovered and exit. You can force <cite>just print the path</cite> using <tt class="docutils literal"><span class="pre">-p</span></tt> 412 or <tt class="docutils literal"><span class="pre">-P</span></tt></p> 413 <p><cite>pyrun</cite> is reasonably smart in respect of python egg distributions. When 414 multiple egg distributions of the same project are found on the discovery path 415 only the <em>best</em> version found is included in the path extension. Eggs which are 416 not compatible with the current python interpreter are ignored. The measure of 417 <cite>best egg for a project</cite> uses the same algorithm as used by the 418 pkg_resources.py module distributed by the setuptools project.</p> 419 <dl class="docutils"> 420 <dt>Note:</dt> 421 <dd>The current version does not filter out incompatible <cite>platforms</cite> for eggs 399 422 that contain c extensions - see <cite>pyrun.filter_best_eggs</cite> if you have time on 400 your hands, its not to much work to add this check.</p> 401 <p>The issue tracker for this package can be found at: 402 <a class="reference" href="http://trac.wiretooth.com/open/">http://trac.wiretooth.com/open/</a>. When opening a ticket please assign it to the 403 'pyrun' component or mention pyrun in the summary.</p> 423 your hands, its not to much work to add this check.</dd> 424 </dl> 425 <p>The issue tracker for this package can be found at:</p> 426 <p><a class="reference" href="http://trac.wiretooth.com/public/wiki/pyrun">http://trac.wiretooth.com/public/wiki/pyrun</a></p> 427 <p>When opening a ticket please assign it to the <cite>pyrun</cite> component or, at least, 428 mention <cite>pyrun</cite> in your ticket summary.</p> 404 429 </div> 405 430 <div class="section"> … … 411 436 <div class="section"> 412 437 <h1><a class="toc-backref" href="#id3" id="command-line-interface" name="command-line-interface">Command line interface</a></h1> 413 <dl class="docutils"> 414 <dt>Usage: pyrun.py [-nidP] [BASEPATH 1] [BASEPATH 2] ... [BASEPATH n]</dt> 415 <dd>[-m mod.name | -c STATEMENT | -C STATEMENT | '--'] [TARGET-OPTIONS]</dd> 416 </dl> 438 <p>Usage: pyrun.py [-nidDpP] [BASEPATH(s)][-m mod.name | '--'] [TARGET-OPTIONS]</p> 417 439 <p>In most cases the solo '--' is not required. It tends to be useful when you 418 440 implicitly select the module to run AND you want to pass a non option argument … … 450 472 using <cite>pdb.set_trace</cite>.</td></tr> 451 473 <tr><td class="option-group"> 474 <kbd><span class="option">-D</span></kbd></td> 475 <td>POSTMORTEM debugging. If the target raises an exception, start 476 a postmortem pdb debugging session.</td></tr> 477 <tr><td class="option-group"> 452 478 <kbd><span class="option">-i</span></kbd></td> 453 479 <td>INTERACTIVE session with prepared sys.argv and sys.path.</td></tr> … … 466 492 </div> 467 493 <div class="section"> 468 <h1><a class="toc-backref" href="#id4" id="module-discovery-and-implicit-selection" name="module-discovery-and-implicit-selection">module discovery and implicit selection</a></h1> 469 <p>If you include an explicit reference to a python source file in the discovery 470 path you are acheiving two things:</p> 471 <ol class="arabic simple"> 472 <li>You select it as the <cite>implicit</cite> run target</li> 473 <li>You <cite>discover</cite> the appropriate path to add to sys.path in order for the 474 identified module to be imported using its <em>fully</em> qualified module name.</li> 475 </ol> 476 <p>All modules referenced on the command line like this are considered for path 477 discovery. The implicit <cite>pyrun target</cite> is <em>always</em> the <em>first</em> module 478 reference.</p> 479 <p>To <em>explicitly</em> select the module to run, terminate the pyrun arguments with 480 <tt class="docutils literal"><span class="pre">-m</span> <span class="pre">fully.qualified.module.name</span></tt>. Replacing <cite>fully.qualified.module.name</cite> 481 with the module you wish to run.</p> 482 </div> 483 <div class="section"> 484 <h1><a class="toc-backref" href="#id5" id="simple-examples" name="simple-examples">simple examples</a></h1> 485 <p>Given:</p> 486 <pre class="literal-block"> 487 ~/foo/__init__.py 488 ~/foo/bar/__init__.py 489 ~/foo/mod.py 490 </pre> 491 <p>Implicit selection of a sub module:</p> 492 <pre class="literal-block"> 493 pyrun ~/foo/bar/__init__.py 494 ^ ^ 495 | | 496 | . 497 | ------- * module file 498 . 499 -----------------------* `sys.path` entry 500 501 pyrun ~/foo/mod.py 502 ^ ^ 503 | | 504 | . 505 | ---------------- * module file 506 . 507 -----------------------* `sys.path` entry 508 </pre> 509 <p>The <tt class="docutils literal"><span class="pre">python</span> <span class="pre">-m</span></tt> form of the above examples would be:</p> 510 <pre class="literal-block"> 511 PYTHONPATH=~/foo python -m foo.bar 512 513 PYTHONPATH=~/foo python -m foo.mod 514 </pre> 515 <p>For examples as simple as this one the only potential advantage of pyrun is the 516 convenience of not having to work with <cite>SHELL</cite> environment variables.</p> 517 <p>Things get more interesting when your <cite>discovery</cite> path includes more elements.</p> 518 </div> 519 <div class="section"> 520 <h1><a class="toc-backref" href="#id6" id="pyrun-module-api" name="pyrun-module-api">pyrun - module api</a></h1> 521 <div class="section"> 522 <h2><a class="toc-backref" href="#id7" id="discover-and-run" name="discover-and-run">discover_and_run</a></h2> 494 <h1><a class="toc-backref" href="#id4" id="pyrun-discover-and-run-pyrun-discover-path" name="pyrun-discover-and-run-pyrun-discover-path">pyrun.discover_and_run, pyrun.discover_path</a></h1> 523 495 <p>All of the command line programs provided by this package are essentially thin 524 wrappers around the <cite> pyrun.discover_and_run</cite> function. This section provides525 <cite>doctest</cite> based discussion and examples. These examples are also part of the526 pyrun test suite.</p>496 wrappers around the <cite>discover_and_run</cite> or <cite>discover_path</cite> functions. This 497 section provides <cite>doctest</cite> based discussion and examples. These examples are 498 also part of the pyrun test suite.</p> 527 499 <p>Lets setup a fake set of python packages and use it to illustrate some basics.</p> 528 500 <blockquote> … … 668 640 specific eggs (linux-i686 vs whatver windows eggs use.)</p> 669 641 </div> 670 </div>671 642 <div class="section"> 672 <h1><a class="toc-backref" href="#id8" id="changelog" name="changelog">ChangeLog</a></h1> 673 <p>NEXTREVISION</p> 643 <h1><a class="toc-backref" href="#id5" id="changelog" name="changelog">ChangeLog</a></h1> 644 <dl class="docutils"> 645 <dt>0.1d</dt> 646 <dd><ul class="first last simple"> 647 <li>documentation tidy up</li> 648 </ul> 649 </dd> 650 <dt>0.1c</dt> 651 <dd><ul class="first last simple"> 652 <li>Use the parent directory of the top package directory for each explicitly 653 listed python file in the discovery path. This means you need to <em>always</em> 654 provide fully qualified module names to <tt class="docutils literal"><span class="pre">-m</span></tt>. This change is necessary 655 to allow the targeted modules imports to work correctly.</li> 656 </ul> 657 </dd> 658 </dl> 659 <p>0.1b</p> 674 660 <blockquote> 675 661 <ul class="simple"> pyrun/trunk/pyrun.py
r779 r781 669 669 670 670 USAGE_runex="""\ 671 %prog [-nidP] [BASEPATH 1] [BASEPATH 2] ... [BASEPATH n] 672 [-m mod.name | -c STATEMENT | -C STATEMENT | '--'] [TARGET-OPTIONS] 671 %prog [-nidDpP] [BASEPATH(s)][-m mod.name | '--'] [TARGET-OPTIONS] 673 672 674 673 In most cases the solo '--' is not required. It tends to be useful when you pyrun/trunk/pyrun.rst
r765 r781 10 10 .. include:: INSTALL.txt 11 11 12 Command line interface 13 ~~~~~~~~~~~~~~~~~~~~~~ 14 12 15 .. include:: command_line_interface.rst 13 16