Changeset 781

Show
Ignore:
Timestamp:
08/01/07 21:21:25 (1 year ago)
Author:
robin
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pyrun/trunk/ChangeLog

    r779 r781  
    11ChangeLog 
    22~~~~~~~~~ 
     3 
     40.1d 
     5  * documentation tidy up 
    36 
    470.1c 
  • pyrun/trunk/README.txt

    r759 r781  
    22~~~~~ 
    33 
    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 
    67 
    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.  
     8You can access the most commonly useful features of `pyrun`, without installing 
     9the project, by running the ``pyrun.py`` file directly. 
    1110 
    1211For example, the following:: 
     
    2120order you list them controls the order in which the path extension entries are 
    2221built. The resulting path will not contain any duplicates. Each entry in the 
    23 path extension will be a legitimate import path; Ie., 
     22path extension will be a legitimate import path. 
    2423 
    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. 
     24Note: 
     25  A setup.py file is provided - with suitable egg entry point declarations  
     26  - if you prefer this. 
    5727 
    5828 
     29For each argument which identifies a python file  `pyrun` will locate the root 
     30package directory and add that to the path. The *absolute* dotted module name 
     31of the first python file you identify in this way is the module that will, by 
     32default, be executed as __main__. You can explicitly override this choice by 
     33using pyrun's ``-m`` option. 
     34 
     35Note: 
     36    root package is the parent directory of the "top most package" see 
     37    `distutils python terms`_ and `distutils distutils terms`_ 
     38 
     39 
     40The delimiter between the `pyrun` arguments and options and the options for the 
     41target module is the first non option argument encountered after the discovery 
     42paths. If that option is a `pyrun` option (see ``pyrun --help`` for the list) 
     43then `pyrun` takes it and passes all remaining arguments to the target module 
     44in a suitably massaged ``sys.argv``. 
     45 
     46If the target module takes arguments but does not naturally accept an option 
     47as its first argument (python setup.py install is the classic example) then 
     48you can artificially terminate the `pyrun` options with ``--``. 
     49 
     50For example it is possible to run the setup script of the `pyrun` project in 
     51the 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 
     68If you have a directory which contains a docutils source tree or installation 
     69then adding that to the discovery path will let the setup.py script build 
     70*this* documentation. 
     71 
     72If none of the non option arguments identify a python module file *and* you 
     73dont explicitly select one using ``-m`` then `pyrun` will simply print the path 
     74it has discovered and exit. You can force `just print the path` using ``-p`` 
     75or ``-P`` 
     76 
     77`pyrun` is reasonably smart in respect of python egg distributions. When 
     78multiple egg distributions of the same project are found on the discovery path 
     79only the *best* version found is included in the path extension. Eggs which are 
     80not 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 
     82pkg_resources.py module distributed by the setuptools project. 
     83 
     84Note: 
     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 
    5989The issue tracker for this package can be found at: 
    60 http://trac.wiretooth.com/open/. When opening a ticket please assign it to the 
    61 'pyrun' component or mention pyrun in the summary. 
    6290 
     91http://trac.wiretooth.com/public/wiki/pyrun 
     92 
     93When opening a ticket please assign it to the `pyrun` component or, at least, 
     94mention `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] 
     1Usage: pyrun.py  [-nidDpP] [BASEPATH(s)][-m mod.name | '--'] [TARGET-OPTIONS] 
    62 
    73In most cases the solo '--' is not required. It tends to be useful when you 
     
    2521  -d            DEBUG session. Prepare for execution, but start a pdb session 
    2622                using `pdb.set_trace`. 
     23  -D            POSTMORTEM debugging. If the target raises an exception, start 
     24                a     postmortem pdb debugging session. 
    2725  -i            INTERACTIVE session with prepared sys.argv and sys.path. 
    2826  -c STATEMENT  Update sys.argv and sys.path then execute statement in a new 
     
    3028  -C STATEMENT  Update sys.argv and sys.path then execute statement in the 
    3129                context of the selected module. [NYI] 
    32  
    33 module discovery and implicit selection 
    34 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    35  
    36 If you include an explicit reference to a python source file in the discovery 
    37 path you are acheiving two things: 
    38  
    39 1. You select it as the `implicit` run target 
    40 2. You `discover` the appropriate path to add to sys.path in order for the 
    41    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 path 
    44 discovery. The implicit `pyrun target` is *always* the *first* module 
    45 reference. 
    46  
    47 To *explicitly* select the module to run, terminate the pyrun arguments with 
    48 ``-m fully.qualified.module.name``. Replacing `fully.qualified.module.name` 
    49 with the module you wish to run. 
    50  
    51 simple examples 
    52 ~~~~~~~~~~~~~~~ 
    53  
    54 Given:: 
    55  
    56   ~/foo/__init__.py 
    57   ~/foo/bar/__init__.py 
    58   ~/foo/mod.py 
    59  
    60  
    61 Implicit selection of a sub module:: 
    62  
    63   pyrun ~/foo/bar/__init__.py 
    64              ^              ^ 
    65              |              | 
    66              |              . 
    67              |               ------- * module file 
    68              . 
    69               -----------------------* `sys.path` entry 
    70  
    71   pyrun ~/foo/mod.py 
    72              ^     ^ 
    73              |     | 
    74              |     . 
    75              |      ---------------- * module file 
    76              . 
    77               -----------------------* `sys.path` entry 
    78  
    79 The ``python -m`` form of the above examples would be:: 
    80  
    81   PYTHONPATH=~/foo python -m foo.bar 
    82  
    83   PYTHONPATH=~/foo python -m foo.mod 
    84  
    85 For examples as simple as this one the only potential advantage of pyrun is the 
    86 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 api 
    2 ~~~~~~~~~~~~~~~~~~ 
    31 
    4 discover_and_run 
    5 ................ 
     2pyrun.discover_and_run, pyrun.discover_path 
     3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    64 
    75All of the command line programs provided by this package are essentially thin 
    8 wrappers around the `pyrun.discover_and_run` function. This section provide
    9 `doctest` based discussion and examples. These examples are also part of th
    10 pyrun test suite. 
     6wrappers around the `discover_and_run` or `discover_path` functions. Thi
     7section provides `doctest` based discussion and examples. These examples ar
     8also part of the pyrun test suite. 
    119 
    1210Lets setup a fake set of python packages and use it to illustrate some basics. 
  • pyrun/trunk/pkg-info.rst

    r779 r781  
    11:License: MIT 
    22:Name: pyrun 
    3 :Version: 0.1c 
     3:Version: 0.1d.dev 
    44:Author: Robin Bryce 
    55:Author-email: robinbryce@gmail.com 
  • pyrun/trunk/pyrun.html

    r765 r781  
    300300</tr> 
    301301<tr><th class="docinfo-name">Version:</th> 
    302 <td>0.1dev</td></tr> 
     302<td>0.1d.dev</td></tr> 
    303303<tr><th class="docinfo-name">Author:</th> 
    304304<td>Robin Bryce</td></tr> 
     
    338338<li><a class="reference" href="#installation" id="id2" name="id2">Installation</a></li> 
    339339<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> 
    347342</ul> 
    348343</div> 
    349344<div class="section"> 
    350345<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 
     347the project, by running the <tt class="docutils literal"><span class="pre">pyrun.py</span></tt> file directly.</p> 
    357348<p>For example, the following:</p> 
    358349<pre class="literal-block"> 
     
    366357order you list them controls the order in which the path extension entries are 
    367358built. 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> 
     359path 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 
     366package directory and add that to the path. The <em>absolute</em> dotted module name 
     367of the first python file you identify in this way is the module that will, by 
     368default, be executed as __main__. You can explicitly override this choice by 
     369using 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 &quot;top most package&quot; 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 
     376target module is the first non option argument encountered after the discovery 
     377paths. 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) 
     378then <cite>pyrun</cite> takes it and passes all remaining arguments to the target module 
     379in 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 
     381as its first argument (python setup.py install is the classic example) then 
     382you 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 
     384the following ways</p> 
     385<blockquote> 
     386<ul> 
     387<li><p class="first">If you have setup tools installed:</p> 
     388<pre class="literal-block"> 
     389python 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 
     393standard library:</p> 
     394<pre class="literal-block"> 
     395python 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"> 
     400python pyrun.py ../python/eggs -m setup bdist_egg 
     401python pyrun.py ../python/eggs setup.py -- bdist_egg 
     402</pre> 
     403</li> 
    375404</ul> 
    376405</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 
     407then 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 
     410dont explicitly select one using <tt class="docutils literal"><span class="pre">-m</span></tt> then <cite>pyrun</cite> will simply print the path 
     411it has discovered and exit. You can force <cite>just print the path</cite> using <tt class="docutils literal"><span class="pre">-p</span></tt> 
     412or <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 
     414multiple egg distributions of the same project are found on the discovery path 
     415only the <em>best</em> version found is included in the path extension. Eggs which are 
     416not 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 
     418pkg_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 
    399422that 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> 
     423your 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, 
     428mention <cite>pyrun</cite> in your ticket summary.</p> 
    404429</div> 
    405430<div class="section"> 
     
    411436<div class="section"> 
    412437<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> 
    417439<p>In most cases the solo '--' is not required. It tends to be useful when you 
    418440implicitly select the module to run AND you want to pass a non option argument 
     
    450472using <cite>pdb.set_trace</cite>.</td></tr> 
    451473<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 
     476a     postmortem pdb debugging session.</td></tr> 
     477<tr><td class="option-group"> 
    452478<kbd><span class="option">-i</span></kbd></td> 
    453479<td>INTERACTIVE session with prepared sys.argv and sys.path.</td></tr> 
     
    466492</div> 
    467493<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> 
    523495<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 provide
    525 <cite>doctest</cite> based discussion and examples. These examples are also part of th
    526 pyrun test suite.</p> 
     496wrappers around the <cite>discover_and_run</cite> or <cite>discover_path</cite> functions. Thi
     497section provides <cite>doctest</cite> based discussion and examples. These examples ar
     498also part of the pyrun test suite.</p> 
    527499<p>Lets setup a fake set of python packages and use it to illustrate some basics.</p> 
    528500<blockquote> 
     
    668640specific eggs (linux-i686 vs whatver windows eggs use.)</p> 
    669641</div> 
    670 </div> 
    671642<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 
     653listed python file in the discovery path. This means you need to <em>always</em> 
     654provide fully qualified module names to <tt class="docutils literal"><span class="pre">-m</span></tt>. This change is necessary 
     655to allow the targeted modules imports to work correctly.</li> 
     656</ul> 
     657</dd> 
     658</dl> 
     659<p>0.1b</p> 
    674660<blockquote> 
    675661<ul class="simple"> 
  • pyrun/trunk/pyrun.py

    r779 r781  
    669669 
    670670USAGE_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] 
    673672 
    674673In most cases the solo '--' is not required. It tends to be useful when you 
  • pyrun/trunk/pyrun.rst

    r765 r781  
    1010.. include:: INSTALL.txt 
    1111 
     12Command line interface 
     13~~~~~~~~~~~~~~~~~~~~~~ 
     14  
    1215.. include:: command_line_interface.rst 
    1316