Bug 1661: Improve build speed with better caching strategy
Changed the way that the cache is located, so the same code can run on any build machine without any configuration.
Made work around for Bug 419 the only option, as we're not using the alternative anyway, and I don't want to commit completely untested code!
Changed caching algorithm, to improve build times.
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>configuration.NestedConfiguration</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Tree link -->
<th> <a
href="module-tree.html">Trees</a> </th>
<!-- Index link -->
<th> <a
href="identifier-index.html">Indices</a> </th>
<!-- Help link -->
<th> <a
href="help.html">Help</a> </th>
<th class="navbar" width="100%"></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="configuration-module.html">Module configuration</a> ::
Class NestedConfiguration
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>] | <a href="configuration.NestedConfiguration-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class NestedConfiguration</h1><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration">source code</a></span><br /><br />
<pre class="base-tree">
object --+
|
UserDict.DictMixin --+
|
<a href="configuration.Configuration-class.html">Configuration</a> --+
|
<strong class="uidshort">NestedConfiguration</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
Initialization.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__init__">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="isBuildable"></a><span class="summary-sig-name">isBuildable</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.isBuildable">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#_addPropertyValue" class="summary-sig-name">_addPropertyValue</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">key</span>,
<span class="summary-sig-arg">value</span>,
<span class="summary-sig-arg">parseList</span>=<span class="summary-sig-default">True</span>)</span><br />
Adds a property value to the configuration.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration._addPropertyValue">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">key</span>,
<span class="summary-sig-arg">interpolate</span>=<span class="summary-sig-default">True</span>)</span><br />
Get an item from the configuration via dictionary interface.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__getitem__">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">key</span>,
<span class="summary-sig-arg">item</span>)</span><br />
Set an item from the configuration via dictionary interface.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__setitem__">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#__delitem__" class="summary-sig-name">__delitem__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">key</span>)</span><br />
Remove an item from the configuration via dictionary interface.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__delitem__">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#keys" class="summary-sig-name">keys</a>(<span class="summary-sig-arg">self</span>)</span><br />
Get the list of item keys.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.keys">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="configuration.NestedConfiguration-class.html#match_name" class="summary-sig-name">match_name</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">name</span>)</span><br />
See if the given name matches the name of this configuration.</td>
<td align="right" valign="top">
<span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.match_name">source code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="configuration.Configuration-class.html">Configuration</a></code></b>:
<code><a href="configuration.Configuration-class.html#__str__">__str__</a></code>,
<code><a href="configuration.Configuration-class.html#get">get</a></code>,
<code><a href="configuration.Configuration-class.html#get_boolean">get_boolean</a></code>,
<code><a href="configuration.Configuration-class.html#get_int">get_int</a></code>,
<code><a href="configuration.Configuration-class.html#get_list">get_list</a></code>,
<code><a href="configuration.Configuration-class.html#interpolate">interpolate</a></code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>UserDict.DictMixin</code></b>:
<code>__cmp__</code>,
<code>__contains__</code>,
<code>__iter__</code>,
<code>__len__</code>,
<code>clear</code>,
<code>has_key</code>,
<code>items</code>,
<code>iteritems</code>,
<code>iterkeys</code>,
<code>itervalues</code>,
<code>pop</code>,
<code>popitem</code>,
<code>setdefault</code>,
<code>update</code>,
<code>values</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="configuration.Configuration-class.html">Configuration</a></code></b>:
<code><a href="configuration.Configuration-class.html#key_re">key_re</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__init__">source code</a></span>
</td>
</table>
Initialization.
<dl class="fields">
<dt>Overrides:
<a href="configuration.Configuration-class.html#__init__">Configuration.__init__</a>
</dt>
</dl>
</td></tr></table>
</div>
<a name="_addPropertyValue"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_addPropertyValue</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">key</span>,
<span class="sig-arg">value</span>,
<span class="sig-arg">parseList</span>=<span class="sig-default">True</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration._addPropertyValue">source code</a></span>
</td>
</table>
<p>Adds a property value to the configuration.</p>
<p>If the property does not exist, it is added without modification.
If there is already a single value matching the key, the value is replaced by a list
containing the original and new values.
If there is already a list, the new value is added to the list.</p>
<p>The value is first processed in case it also represents a list of values,
e.g. comma-separated values.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="__getitem__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">key</span>,
<span class="sig-arg">interpolate</span>=<span class="sig-default">True</span>)</span>
<br /><em class="fname">(Indexing operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__getitem__">source code</a></span>
</td>
</table>
Get an item from the configuration via dictionary interface.
<dl class="fields">
<dt>Overrides:
<a href="configuration.Configuration-class.html#__getitem__">Configuration.__getitem__</a>
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__setitem__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">key</span>,
<span class="sig-arg">item</span>)</span>
<br /><em class="fname">(Index assignment operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__setitem__">source code</a></span>
</td>
</table>
Set an item from the configuration via dictionary interface.
<dl class="fields">
<dt>Overrides:
<a href="configuration.Configuration-class.html#__setitem__">Configuration.__setitem__</a>
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__delitem__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__delitem__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">key</span>)</span>
<br /><em class="fname">(Index deletion operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.__delitem__">source code</a></span>
</td>
</table>
Remove an item from the configuration via dictionary interface.
<dl class="fields">
<dt>Overrides:
<a href="configuration.Configuration-class.html#__delitem__">Configuration.__delitem__</a>
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="keys"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">keys</span>(<span class="sig-arg">self</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.keys">source code</a></span>
</td>
</table>
Get the list of item keys.
<dl class="fields">
<dt>Overrides:
<a href="configuration.Configuration-class.html#keys">Configuration.keys</a>
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="match_name"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">match_name</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">name</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="configuration-pysrc.html#NestedConfiguration.match_name">source code</a></span>
</td>
</table>
See if the given name matches the name of this configuration.
<dl class="fields">
<dt>Overrides:
<a href="configuration.Configuration-class.html#match_name">Configuration.match_name</a>
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Tree link -->
<th> <a
href="module-tree.html">Trees</a> </th>
<!-- Index link -->
<th> <a
href="identifier-index.html">Indices</a> </th>
<!-- Help link -->
<th> <a
href="help.html">Help</a> </th>
<th class="navbar" width="100%"></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0beta1 on Wed Sep 09 13:44:18 2009
</td>
<td align="right" class="footer">
<a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie()
// -->
</script>
</body>
</html>