<section><h>Changes in 1.11.1 (released 01/11/2008)</h>

<ul>
<li>Added missing source file <filename>_xml_codec_include.c</filename> to
the source distributions.</li>
</ul>

<section><h>Changes in 1.11 (released 01/07/2008)</h>

<ul>
<li><lit>root:</lit> &url;s are now treated as local files for purposes
of file i/o.</li>
<li><class>ll.make.ModuleAction</class> no longer supports
modules that fiddle with <lit>sys.modules</lit>.</li>
<li>The function <func>ll.misc.tokenizepi</func> can be used to split
a string according to the processing instruction tags in the string (this
formerly was part of <mod>ll.xist.xsc</mod>).</li>
<li><mod>ll.make</mod> has been changed interally to store modification
timestamp, which should fix the implementation of <class>PhonyAction</class>
and makes it possible to use <class>PhonyAction</class>s as inputs to other
actions.</li>
<li><mod>ll.make</mod> has a new action <class>ImportAction</class>.
This action doesn't take any input. It imports a module specified by name,
e.g. <lit>make.ImportAction("cStringIO")</lit> (Note that you should not
import one module via <class>ModuleAction</class> and <class>ImportAction</class>
(or a normal import) as this will return two different module objects).</li>
<li>Make actions don't have the input actions as a constructor parameter any
longer. The input action can now only be set via <meth>__div__</meth>.</li>
<li><mod>ll.make</mod> has been updated to support the actions required
by &xist; 3.0.</li>
<li>The functions <func>misc.item</func>, <func>misc.first</func>,
<func>misc.last</func> and <func>misc.count</func> have been
reimplemented in C and should be faster now (especally <func>item</func>
for negative indexes).</li>
<li><class>misc.Namespace</class> is gone and has been replaced with
<class>misc.Pool</class> which works similar to the pools use by &xist;
(in fact &xist;s pool class is a subclass of <mod>misc</mod>s).</li>
<li>The module <mod>xml_codec</mod> has been added. It contains a complete
codec for encoding and decoding &xml;</li>
</ul>

</section>


<section><h>Changes in 1.10.1 (released 07/20/2007)</h>

<ul>
<li>Fix option handling in <mod>ll.daemon</mod> (values from the
optionparser where never used).</li>
</ul>

</section>


<section><h>Changes in 1.10 (released 06/21/2007)</h>

<ul>
<li><mod>ll.daemon</mod> now uses <mod>optparse</mod> to
parse the command line options. Start options <lit>restart</lit> and
<lit>run</lit> have been added.</li>
</ul>

</section>


<section><h>Changes in 1.9.1 (released 04/03/2007)</h>

<ul>
<li>Fixed a bug in <class>ll.url.SshConnection</class>, which was missing
a call to <func>urllib.url2pathname</func>.</li>
</ul>

</section>


<section><h>Changes in 1.9 (released 03/30/2007)</h>

<ul>
<li><class>ll.url.Context</class> no longer relies on automatic cleanup for
closing connections. Instead when a <class>Context</class> object is used in a
<lit>with</lit> block, all connections will be closed at the end of the block.
This should finally fix the problem with hanging threads at the end of the program.</li>
<li><p>A script <filename>ucp.py</filename> has been added that can be used to
copy stuff around:</p>
<tty>
ucp -v http://www.python.org ssh://root@www.example.net/~joe/public_html/index.html -u joe -g users
</tty></li>
</ul>

</section>


<section><h>Changes in 1.8 (released 03/12/2007)</h>

<ul>
<li>
<p>In calls to <class>ll.url.URL</class> methods that get forwarded
to a connection it's now possible to pass keyword arguments for the connection
constructor directly to the called method, i.e. you can do:</p>
<tty>
<prompt>&gt;&gt;&gt; </prompt><input>u = url.URL("ssh://root@www.example.com/etc/passwd")</input>
<prompt>&gt;&gt;&gt; </prompt><input>u.size(identity="/root/.ssh/id_rsa")</input>
1550
</tty>
</li>
</ul>

</section>


<section><h>Changes in 1.7.5 (released 03/09/2007)</h>

<ul>
<li><class>ll.url.Resource</class> now has a method <meth>encoding</meth>
that returns <lit>None</lit> (for <z>encoding unknown</z>).</li>
</ul>

</section>


<section><h>Changes in 1.7.4 (released 03/08/2007)</h>

<ul>
<li><class>ll.url.SshConnection</class>s now supports the <arg>identity</arg>
parameter. This can be used to specify the filename to be used as the identity
file (private key) for authentication.</li>
</ul>

</section>


<section><h>Changes in 1.7.3 (released 02/22/2007)</h>

<ul>
<li><class>ll.url.SshConnection</class> now has a new method
<meth>close</meth> which can be used to shut down the communication channel.
As a <class>SshConnection</class> no longer stores a reference to the context,
this means that ssh connections are shut down immediately after the end of the
context in which they are stored. This avoids a problem with hanging threads.</li>
</ul>

</section>


<section><h>Changes in 1.7.2 (released 02/02/2007)</h>

<ul>
<li>Fixed a bug in <func>ll.url._import</func>.</li>
</ul>

</section>


<section><h>Changes in 1.7.1 (released 01/24/2007)</h>

<ul>
<li><mod>ll.astyle</mod> has been updated to the current trunk
version of <a href="http://ipython.scipy.org/">IPython</a>.</li>
<li>As the <mod>new</mod> module is deprecated, use
<mod>types</mod> instead.</li>
</ul>

</section>


<section><h>Changes in 1.7 (released 11/23/2006)</h>

<ul>
<li>Fixed a bug in the user switching in <class>ll.daemon.Daemon</class>.</li>
<li>Added a new action class <class>GetAttrAction</class> to
<mod>ll.make</mod>. This action gets an attribute of its input
object.</li>
</ul>

</section>


<section><h>Changes in 1.6.1 (released 11/22/2006)</h>

<ul>
<li><class>ll.make.ModuleAction</class> now puts a real filename into the
modules <lit>__file__</lit> attribute, so that source code can be displayed
in stacktraces.</li>
<li><mod>ll.astyle</mod> has been fixed to work with the current trunk
version of <a href="http://ipython.scipy.org/">IPython</a>.</li>
</ul>

</section>


<section><h>Changes in 1.6 (released 11/08/2006)</h>

<ul>
<li><mod>ll.url</mod> now supports ssh &url;s which are files on remote
hosts. This requires <a href="http://codespeak.net/py/current/doc/execnet.html">py.execnet</a>.
Most of the file data and metadata handling has been rewritten to support the
requirements of ssh &url;s.</li>

<li><class>ll.make.ModeAction</class> and <class>ll.make.OwnerAction</class>
are subclasses of <class>ll.make.ExternalAction</class> now. This means they
will execute even in <z>infoonly</z> mode.</li>

<li>Fixed a bug in <meth>ll.make.JoinAction.get</meth>.</li>

<li>Remove the pid file for <meth>ll.sisyphus.Job</meth> when a
<class>KeyboardInterrupt</class> happens and we're running on Python 2.5.</li>

<li>Fixed a longstanding bug in <meth>ll.sisyphus.Job</meth> which resulted
in the pid file not being written in certain situations.</li>

<li><class>ll.daemon.Daemon</class> now allows to switch the group too.</li>
</ul>

</section>


<section><h>Changes in 1.5 (released 09/24/2006)</h>

<ul>
<li><class>ll.make.XISTTextAction</class> is compatible to &xist; 2.15 now.</li>

<li>The functions <func>ll.url.Dirname</func> and
<func>ll.url.Filename</func> have been removed (use
<func>ll.url.Dir</func> and <func>ll.url.File</func>
instead).</li>

<li>The methods <meth>ll.url.URL.isLocal</meth> and
<meth>ll.url.URL.asFilename</meth> have been removed (use
<meth>ll.url.URL.islocal</meth> and <meth>ll.url.URL.local</meth>
instead).</li>
</ul>

</section>


<section><h>Changes in 1.4 (released 08/23/2006)</h>

<ul>
<li>A new module has been added: <mod>ll.daemon</mod> can be used on UNIX
to fork a daemon running.</li>
</ul>

</section>


<section><h>Changes in 1.3.2 (released 07/25/2006)</h>

<ul>
<li><class>ll.make.ModuleAction</class> now normalizes line feeds, so that this
action can now be used directly on Windows too.</li>
</ul>

</section>


<section><h>Changes in 1.3.1 (released 07/06/2006)</h>

<ul>
<li>An option <option>showinfoonly</option> has been added to
<class>ll.make.Project</class> (defaulting to <lit>False</lit>). This option
determines whether actions that run in <lit>infoonly</lit> mode are reported or
not.</li>
</ul>

</section>


<section><h>Changes in 1.3 (released 06/28/2006)</h>

<ul>
<li><mod>ll.make</mod> has been rewritten. Now there's no longer a
distinction between <class>Target</class>s and <class>Action</class>s. Actions
can be chained more easily and creating an action and registering it with the
project are two separate steps. Actions can no longer be shared, as each action
stores its own input actions (but output actions are not stored). <z>Ids</z>
have been renamed to <z>keys</z> (and
<class>DBID</class>/<class>OracleID</class> to
<class>DBKey</class>/<class>OracleKey</class>). <class>ImportAction</class> has
been renamed to <class>ModuleAction</class> and can now turn any string into a
module.</li>

<li>In <mod>ll.url</mod> modification dates for local files now include
microseconds (if the OS supports it).</li>

<li>A class <class>Queue</class> has been added to <mod>ll.misc</mod>
which provides FIFO queues.</li>

<li>A decorator <func>withdoc</func> has been added to
<mod>ll.misc</mod> that sets the docstring on the function it
decorates.</li>

<li><mod>setuptools</mod> is now supported for installation.</li>
</ul>

</section>


<section><h>Changes in 1.2 (released 12/13/2005)</h>

<ul>
<li><lit>None</lit> is now allowed as a proper data object in
<mod>ll.make</mod> actions.</li>

<li><mod>ll.xpit</mod> now
supports conditionals (i.e. the new processing instruction targets
<lit>if</lit>, <lit>elif</lit>, <lit>else</lit> and <lit>endif</lit>. Now there
<em>must</em> be a space after the target name.</li>
</ul>

</section>


<section><h>Changes in 1.1.1 (released 11/15/2005)</h>

<ul>
<li>Fixed a bug in <meth>ll.make.Project.buildwithargs</meth>.</li>
</ul>

</section>


<section><h>Changes in 1.1 (released 10/31/2005)</h>

<ul>
<li><class>ll.make.TOXICAction</class> no longer takes an <arg>encoding</arg>
argument in the constructor, but works on unicode strings directly.</li>

<li>Two new actions (<class>DecodeAction</class> and
<class>EncodeAction</class>) have been added to <mod>ll.make</mod>.</li>
</ul>

</section>


<section><h>Changes in 1.0.2 (released 10/24/2005)</h>

<ul>
<li>Fixed a bug in <meth>ll.make.Project.destroy</meth> that broke the
<meth>recreate</meth> method.</li>
</ul>

</section>


<section><h>Changes in 1.0.1 (released 10/18/2005)</h>

<ul>
<li>Fixed a bug in <meth>ll.make.Project.__contains__.</meth></li>
</ul>

</section>


<section><h>Changes in 1.0 (released 10/13/2005)</h>

<ul>
<li>This package now contains the following modules, that have been distributed
as separate packages previously: <mod>ansistyle</mod>,
<mod>color</mod>, <mod>make</mod>, <mod>misc</mod> (which
contains the stuff from the old <mod>ll</mod> package),
<mod>sisyphus</mod>, <mod>url</mod> and <mod>xpit</mod>.</li>

<li><class>ll.misc.Iterator</class> now has a method <meth>get</meth> that
will return a default value when the iterator doesn't have the appropriate
item.</li>

<li>In <mod>ll.make</mod> the output has been fixed: The
<lit>showactionfull</lit> flag is checked before the <lit>showaction</lit> flag
and target id's will always be output in this mode.</li>
</ul>

</section>
