<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[13807] twext/trunk/twext</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.calendarserver.org//changeset/13807">13807</a></dd>
<dt>Author</dt> <dd>cdaboo@apple.com</dd>
<dt>Date</dt> <dd>2014-07-31 12:18:20 -0700 (Thu, 31 Jul 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Whitespace.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#twexttrunktwextapplicationmasterchildpy">twext/trunk/twext/application/masterchild.py</a></li>
<li><a href="#twexttrunktwextenterpriseadbapi2py">twext/trunk/twext/enterprise/adbapi2.py</a></li>
<li><a href="#twexttrunktwextenterprisedaltesttest_sqlsyntaxpy">twext/trunk/twext/enterprise/dal/test/test_sqlsyntax.py</a></li>
<li><a href="#twexttrunktwextenterprisejobqueuepy">twext/trunk/twext/enterprise/jobqueue.py</a></li>
<li><a href="#twexttrunktwextenterprisequeuepy">twext/trunk/twext/enterprise/queue.py</a></li>
<li><a href="#twexttrunktwextenterprisetesttest_adbapi2py">twext/trunk/twext/enterprise/test/test_adbapi2.py</a></li>
<li><a href="#twexttrunktwextinternetadaptendpointpy">twext/trunk/twext/internet/adaptendpoint.py</a></li>
<li><a href="#twexttrunktwextinternetdecoratepy">twext/trunk/twext/internet/decorate.py</a></li>
<li><a href="#twexttrunktwextinternetfswatchpy">twext/trunk/twext/internet/fswatch.py</a></li>
<li><a href="#twexttrunktwextinternetgaiendpointpy">twext/trunk/twext/internet/gaiendpoint.py</a></li>
<li><a href="#twexttrunktwextinternetspawnsvcpy">twext/trunk/twext/internet/spawnsvc.py</a></li>
<li><a href="#twexttrunktwextinternetsslpy">twext/trunk/twext/internet/ssl.py</a></li>
<li><a href="#twexttrunktwextinternettesttest_adaptendpointpy">twext/trunk/twext/internet/test/test_adaptendpoint.py</a></li>
<li><a href="#twexttrunktwextinternettesttest_gaiendpointpy">twext/trunk/twext/internet/test/test_gaiendpoint.py</a></li>
<li><a href="#twexttrunktwextinternetthreadutilspy">twext/trunk/twext/internet/threadutils.py</a></li>
<li><a href="#twexttrunktwextpythonlaunchdpy">twext/trunk/twext/python/launchd.py</a></li>
<li><a href="#twexttrunktwextpythonlogpy">twext/trunk/twext/python/log.py</a></li>
<li><a href="#twexttrunktwextpythonparallelpy">twext/trunk/twext/python/parallel.py</a></li>
<li><a href="#twexttrunktwextpythontestpullpipepy">twext/trunk/twext/python/test/pullpipe.py</a></li>
<li><a href="#twexttrunktwextpythontesttest_filepathpy">twext/trunk/twext/python/test/test_filepath.py</a></li>
<li><a href="#twexttrunktwextpythontesttest_launchdpy">twext/trunk/twext/python/test/test_launchd.py</a></li>
<li><a href="#twexttrunktwextpythontesttest_logpy">twext/trunk/twext/python/test/test_log.py</a></li>
<li><a href="#twexttrunktwextpythontesttest_parallelpy">twext/trunk/twext/python/test/test_parallel.py</a></li>
<li><a href="#twexttrunktwextwhodirectorypy">twext/trunk/twext/who/directory.py</a></li>
<li><a href="#twexttrunktwextwhoidirectorypy">twext/trunk/twext/who/idirectory.py</a></li>
<li><a href="#twexttrunktwextwhoindexpy">twext/trunk/twext/who/index.py</a></li>
<li><a href="#twexttrunktwextwholdap_servicepy">twext/trunk/twext/who/ldap/_service.py</a></li>
<li><a href="#twexttrunktwextwholdap_utilpy">twext/trunk/twext/who/ldap/_util.py</a></li>
<li><a href="#twexttrunktwextwholdaptesttest_servicepy">twext/trunk/twext/who/ldap/test/test_service.py</a></li>
<li><a href="#twexttrunktwextwholdaptesttest_utilpy">twext/trunk/twext/who/ldap/test/test_util.py</a></li>
<li><a href="#twexttrunktwextwhoopendirectory_constantspy">twext/trunk/twext/who/opendirectory/_constants.py</a></li>
<li><a href="#twexttrunktwextwhoopendirectory_scriptspy">twext/trunk/twext/who/opendirectory/_scripts.py</a></li>
<li><a href="#twexttrunktwextwhoopendirectory_servicepy">twext/trunk/twext/who/opendirectory/_service.py</a></li>
<li><a href="#twexttrunktwextwhoopendirectorytesttest_servicepy">twext/trunk/twext/who/opendirectory/test/test_service.py</a></li>
<li><a href="#twexttrunktwextwhotesttest_directorypy">twext/trunk/twext/who/test/test_directory.py</a></li>
<li><a href="#twexttrunktwextwhotesttest_indexpy">twext/trunk/twext/who/test/test_index.py</a></li>
<li><a href="#twexttrunktwextwhotesttest_utilpy">twext/trunk/twext/who/test/test_util.py</a></li>
<li><a href="#twexttrunktwextwhotesttest_xmlpy">twext/trunk/twext/who/test/test_xml.py</a></li>
<li><a href="#twexttrunktwextwhoxmlpy">twext/trunk/twext/who/xml.py</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="twexttrunktwextapplicationmasterchildpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/application/masterchild.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/application/masterchild.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/application/masterchild.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> except TypeError:
</span><span class="cx"> raise UsageError("Not a protocol: {0}".format(protocol))
</span><span class="cx">
</span><del>- #### FIXME: port should be a strport
</del><ins>+ # FIXME: port should be a strport
</ins><span class="cx">
</span><span class="cx"> # Validate port number
</span><span class="cx"> try:
</span></span></pre></div>
<a id="twexttrunktwextenterpriseadbapi2py"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/enterprise/adbapi2.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/enterprise/adbapi2.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/enterprise/adbapi2.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -932,6 +932,7 @@
</span><span class="cx"> return self.abort()
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def _fork(x):
</span><span class="cx"> """
</span><span class="cx"> Produce a L{Deferred} that will fire when another L{Deferred} fires without
</span></span></pre></div>
<a id="twexttrunktwextenterprisedaltesttest_sqlsyntaxpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/enterprise/dal/test/test_sqlsyntax.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/enterprise/dal/test/test_sqlsyntax.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/enterprise/dal/test/test_sqlsyntax.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -973,13 +973,11 @@
</span><span class="cx"> self.assertEquals(
</span><span class="cx"> Select(
</span><span class="cx"> From=self.schema.FOO,
</span><del>- Where=(
- (
</del><ins>+ Where=((
</ins><span class="cx"> self.schema.FOO.BAZ == Parameter("P1")
</span><span class="cx"> ).Or(
</span><del>- self.schema.FOO.BAR.In(Parameter("names", len(items))
- ).And(
- self.schema.FOO.BAZ == Parameter("P2")
</del><ins>+ self.schema.FOO.BAR.In(Parameter("names", len(items))).And(
+ self.schema.FOO.BAZ == Parameter("P2")
</ins><span class="cx"> )
</span><span class="cx"> ))
</span><span class="cx"> ).toSQL().bind(P1="P1", P2="P2", names=items),
</span></span></pre></div>
<a id="twexttrunktwextenterprisejobqueuepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/enterprise/jobqueue.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/enterprise/jobqueue.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/enterprise/jobqueue.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -81,22 +81,22 @@
</span><span class="cx"> More details:
</span><span class="cx">
</span><span class="cx"> Terminology:
</span><del>-
</del><ins>+
</ins><span class="cx"> node: a host in a multi-host setup. Each node will contain a
</span><span class="cx"> "controller" process and a set of "worker" processes.
</span><span class="cx"> Nodes communicate with each other to allow load balancing
</span><span class="cx"> of jobs across the entire cluster.
</span><del>-
</del><ins>+
</ins><span class="cx"> controller: a process running in a node that is in charge of
</span><span class="cx"> managing "workers" as well as connections to other nodes. The
</span><span class="cx"> controller polls the job queue and dispatches outstanding jobs
</span><span class="cx"> to its "workers".
</span><del>-
</del><ins>+
</ins><span class="cx"> worker: a process running in a node that is responsible for
</span><span class="cx"> executing jobs sent to it by the "controller". It also
</span><span class="cx"> handles enqueuing of jobs as dictated by operations it
</span><span class="cx"> is doing.
</span><del>-
</del><ins>+
</ins><span class="cx"> A controller has a:
</span><span class="cx">
</span><span class="cx"> L{WorkerConnectionPool}: this maintains a list of worker processes that
</span><span class="lines">@@ -1499,7 +1499,7 @@
</span><span class="cx"> """
</span><span class="cx"> A worker enqueued a job and is letting us know. We need to "ping" the
</span><span class="cx"> L{PeerConnectionPool} to ensure it is polling the job queue at its
</span><del>- normal "fast" rate, as opposed to slower idle rates.
</del><ins>+ normal "fast" rate, as opposed to slower idle rates.
</ins><span class="cx"> """
</span><span class="cx">
</span><span class="cx"> self.peerPool.enqueuedJob()
</span><span class="lines">@@ -2180,8 +2180,8 @@
</span><span class="cx"> the same peer.
</span><span class="cx"> """
</span><span class="cx"> # if (host, port) in self.mappedPeers:
</span><del>- # TODO: think about this for race conditions
- # self.mappedPeers.pop((host, port)).transport.loseConnection()
</del><ins>+ # TODO: think about this for race conditions
+ # self.mappedPeers.pop((host, port)).transport.loseConnection()
</ins><span class="cx"> self.mappedPeers[(host, port)] = peer
</span><span class="cx">
</span><span class="cx"> _connectingToPeer = []
</span></span></pre></div>
<a id="twexttrunktwextenterprisequeuepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/enterprise/queue.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/enterprise/queue.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/enterprise/queue.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -1437,8 +1437,8 @@
</span><span class="cx"> the same peer.
</span><span class="cx"> """
</span><span class="cx"> # if (host, port) in self.mappedPeers:
</span><del>- # TODO: think about this for race conditions
- # self.mappedPeers.pop((host, port)).transport.loseConnection()
</del><ins>+ # TODO: think about this for race conditions
+ # self.mappedPeers.pop((host, port)).transport.loseConnection()
</ins><span class="cx"> self.mappedPeers[(host, port)] = peer
</span><span class="cx">
</span><span class="cx"> _connectingToPeer = []
</span></span></pre></div>
<a id="twexttrunktwextenterprisetesttest_adbapi2py"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/enterprise/test/test_adbapi2.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/enterprise/test/test_adbapi2.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/enterprise/test/test_adbapi2.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -352,7 +352,7 @@
</span><span class="cx"> stopResult = self.resultOf(self.pool.stopService())
</span><span class="cx"> self.assertEquals(stopResult, [])
</span><span class="cx"> self.flushHolders()
</span><del>- #self.assertEquals(abortResult, [None])
</del><ins>+ # self.assertEquals(abortResult, [None])
</ins><span class="cx"> self.assertResultList(stopResult, None)
</span><span class="cx">
</span><span class="cx">
</span></span></pre></div>
<a id="twexttrunktwextinternetadaptendpointpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/adaptendpoint.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/adaptendpoint.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/adaptendpoint.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -163,4 +163,3 @@
</span><span class="cx"> wrap.noisy = clientFactory.noisy # relay the noisy attribute to the wrapper
</span><span class="cx"> wrap.connect()
</span><span class="cx"> return wrap
</span><del>-
</del></span></pre></div>
<a id="twexttrunktwextinternetdecoratepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/decorate.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/decorate.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/decorate.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -90,9 +90,9 @@
</span><span class="cx"> if argname in kw:
</span><span class="cx"> return kw[argname]
</span><span class="cx"> else:
</span><del>- raise TypeError("could not find key argument %r in %r/%r (%r)" %
- (argname, args, kw, argpos)
- )
</del><ins>+ raise TypeError("could not find key argument %r in %r/%r (%r)" % (
+ argname, args, kw, argpos
+ ))
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> def decorate(thunk):
</span></span></pre></div>
<a id="twexttrunktwextinternetfswatchpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/fswatch.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/fswatch.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/fswatch.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> kqueueSupported = False
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class IDirectoryChangeListenee(Interface):
</span><span class="cx"> """
</span><span class="cx"> A delegate of DirectoryChangeListener
</span><span class="lines">@@ -60,7 +61,7 @@
</span><span class="cx"> """
</span><span class="cx">
</span><span class="cx">
</span><del>-#TODO: better way to tell if reactor is kqueue or not
</del><ins>+# TODO: better way to tell if reactor is kqueue or not
</ins><span class="cx"> if kqueueSupported and hasattr(reactor, "_doWriteOrRead"):
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -78,7 +79,6 @@
</span><span class="cx"> patchReactor(reactor)
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> class DirectoryChangeListener(Logger, object):
</span><span class="cx"> """
</span><span class="cx"> Listens for the removal, renaming, or general unavailability of a
</span></span></pre></div>
<a id="twexttrunktwextinternetgaiendpointpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/gaiendpoint.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/gaiendpoint.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/gaiendpoint.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> AF_UNSPEC, SOCK_STREAM)
</span><span class="cx"> @dgai.addCallback
</span><span class="cx"> def gaiToEndpoints(gairesult):
</span><del>- for family, socktype, proto, canonname, sockaddr in gairesult:
</del><ins>+ for family, _ignore_socktype, _ignore_proto, _ignore_canonname, sockaddr in gairesult:
</ins><span class="cx"> if family in [AF_INET6, AF_INET]:
</span><span class="cx"> yield self.subEndpoint(self.reactor, sockaddr[0],
</span><span class="cx"> sockaddr[1], self.contextFactory)
</span><span class="lines">@@ -162,7 +162,9 @@
</span><span class="cx"> host = "localhost"
</span><span class="cx"> port = 22
</span><span class="cx"> gaie = GAIEndpoint(reactor, host, port)
</span><ins>+
</ins><span class="cx"> from twisted.internet.protocol import Factory, Protocol
</span><ins>+
</ins><span class="cx"> class HelloGoobye(Protocol, object):
</span><span class="cx"> def connectionMade(self):
</span><span class="cx"> print('Hello!')
</span><span class="lines">@@ -171,12 +173,16 @@
</span><span class="cx"> def connectionLost(self, reason):
</span><span class="cx"> print('Goodbye')
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class MyFactory(Factory, object):
</span><span class="cx"> def buildProtocol(self, addr):
</span><span class="cx"> print('Building protocol for:', addr)
</span><span class="cx"> return HelloGoobye()
</span><ins>+
+
</ins><span class="cx"> def bye(what):
</span><span class="cx"> print('bye', what)
</span><span class="cx"> reactor.stop()
</span><ins>+
</ins><span class="cx"> gaie.connect(MyFactory()).addBoth(bye)
</span><span class="cx"> reactor.run()
</span></span></pre></div>
<a id="twexttrunktwextinternetspawnsvcpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/spawnsvc.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/spawnsvc.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/spawnsvc.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -50,8 +50,6 @@
</span><span class="cx"> os._exit(0)
</span><span class="cx">
</span><span class="cx">
</span><del>-import sys
-
</del><span class="cx"> from zope.interface import implements
</span><span class="cx">
</span><span class="cx"> from twisted.internet.interfaces import ITransport, IPushProducer, IConsumer
</span><span class="lines">@@ -257,6 +255,3 @@
</span><span class="cx"> bridge.eventuallyStop()
</span><span class="cx"> return self._stopAllDeferred
</span><span class="cx"> return succeed(None)
</span><del>-
-
-
</del></span></pre></div>
<a id="twexttrunktwextinternetsslpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/ssl.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/ssl.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/ssl.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> sslmethod=sslmethod
</span><span class="cx"> )
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def cacheContext(self):
</span><span class="cx"> # Unfortunate code duplication.
</span><span class="cx"> ctx = SSLContext(self.sslmethod)
</span></span></pre></div>
<a id="twexttrunktwextinternettesttest_adaptendpointpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/test/test_adaptendpoint.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/test/test_adaptendpoint.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/test/test_adaptendpoint.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> self.__dict__.update(kw)
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class RecordingProtocol(Protocol, object):
</span><span class="cx"> def __init__(self):
</span><span class="cx"> super(RecordingProtocol, self).__init__()
</span><span class="lines">@@ -82,7 +83,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> def buildProtocol(self, addr):
</span><del>- b = RecordingProtocol()
</del><ins>+ b = RecordingProtocol()
</ins><span class="cx"> self.built.append(names(protocol=b, addr=addr))
</span><span class="cx"> return b
</span><span class="cx">
</span><span class="lines">@@ -100,6 +101,7 @@
</span><span class="cx"> return d
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class RecordingTransport(object):
</span><span class="cx">
</span><span class="cx"> def __init__(self):
</span><span class="lines">@@ -256,6 +258,3 @@
</span><span class="cx"> """
</span><span class="cx"> self.connectionFails(Failure(ZeroDivisionError()))
</span><span class="cx"> self.assertRaises(RuntimeError, self.connector.stopConnecting)
</span><del>-
-
-
</del></span></pre></div>
<a id="twexttrunktwextinternettesttest_gaiendpointpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/test/test_gaiendpoint.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/test/test_gaiendpoint.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/test/test_gaiendpoint.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx"> A call to L{getaddrinfo} has succeeded; invoke the L{Deferred} waiting
</span><span class="cx"> on it.
</span><span class="cx"> """
</span><del>- d, f, a, k = self.inThreads.pop(0)
</del><ins>+ d, _ignore_f, _ignore_a, _ignore_k = self.inThreads.pop(0)
</ins><span class="cx"> d.callback([(family, socktype, proto, canonname, sockaddr)])
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -109,4 +109,3 @@
</span><span class="cx"> attempt = self.fakeRealEndpoints[0]._attempt
</span><span class="cx"> attempt.callback(self.fakeRealEndpoints[0]._factory.buildProtocol(None))
</span><span class="cx"> self.assertEqual(len(protos), 1)
</span><del>-
</del></span></pre></div>
<a id="twexttrunktwextinternetthreadutilspy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/internet/threadutils.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/internet/threadutils.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/internet/threadutils.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -118,6 +118,3 @@
</span><span class="cx"> self._state = _STATE_STOPPING
</span><span class="cx"> self._q.put(_DONE)
</span><span class="cx"> return s
</span><del>-
-
-
</del></span></pre></div>
<a id="twexttrunktwextpythonlaunchdpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/launchd.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/launchd.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/launchd.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -205,7 +205,6 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> class LaunchErrno(Exception):
</span><span class="cx"> """
</span><span class="cx"> Error from launchd.
</span></span></pre></div>
<a id="twexttrunktwextpythonlogpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/log.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/log.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/log.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> "LogLevelFilterPredicate",
</span><span class="cx"> "LegacyLogObserver",
</span><span class="cx"> "replaceTwistedLoggers",
</span><del>- #"StandardIOObserver",
</del><ins>+ # "StandardIOObserver",
</ins><span class="cx"> ]
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -81,7 +81,6 @@
</span><span class="cx"> import twisted.python.log
</span><span class="cx"> from twisted.python.log import msg as twistedLogMessage
</span><span class="cx"> from twisted.python.log import addObserver, removeObserver
</span><del>-from twisted.python.log import ILogObserver as ILegacyLogObserver
</del><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -349,7 +348,7 @@
</span><span class="cx"> invalidLevel=level,
</span><span class="cx"> logger=self,
</span><span class="cx"> )
</span><del>- #level = LogLevel.error
</del><ins>+ # level = LogLevel.error
</ins><span class="cx"> # FIXME: continue to emit?
</span><span class="cx"> return
</span><span class="cx">
</span><span class="lines">@@ -603,7 +602,7 @@
</span><span class="cx"> @param predicates: an ordered iterable of predicates to apply
</span><span class="cx"> to events before forwarding to the wrapped observer.
</span><span class="cx"> """
</span><del>- self.observer = observer
</del><ins>+ self.observer = observer
</ins><span class="cx"> self.predicates = list(predicates)
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -701,7 +700,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> def __call__(self, event):
</span><del>- level = event.get("log_level", None)
</del><ins>+ level = event.get("log_level", None)
</ins><span class="cx"> namespace = event.get("log_namespace", None)
</span><span class="cx">
</span><span class="cx"> if (
</span><span class="lines">@@ -819,10 +818,11 @@
</span><span class="cx"> def __init__(self):
</span><span class="cx"> self.legacyLogObserver = LegacyLogObserver(twistedLogMessage)
</span><span class="cx"> self.filteredPublisher = LogPublisher(self.legacyLogObserver)
</span><del>- self.levels = LogLevelFilterPredicate()
- self.filters = FilteringLogObserver(self.filteredPublisher,
- (self.levels,))
- self.rootPublisher = LogPublisher(self.filters)
</del><ins>+ self.levels = LogLevelFilterPredicate()
+ self.filters = FilteringLogObserver(
+ self.filteredPublisher, (self.levels,)
+ )
+ self.rootPublisher = LogPublisher(self.filters)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> def addObserver(self, observer, filtered=True):
</span><span class="lines">@@ -982,8 +982,6 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-
-######################################################################
</del><span class="cx"> # FIXME: This may not be needed; look into removing it.
</span><span class="cx">
</span><span class="cx"> class StandardIOObserver(object):
</span></span></pre></div>
<a id="twexttrunktwextpythonparallelpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/parallel.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/parallel.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/parallel.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -89,6 +89,3 @@
</span><span class="cx"> """
</span><span class="cx"> return (DeferredList(self.activeDeferreds)
</span><span class="cx"> .addCallback(lambda ignored: None))
</span><del>-
-
-
</del></span></pre></div>
<a id="twexttrunktwextpythontestpullpipepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/test/pullpipe.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/test/pullpipe.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/test/pullpipe.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -18,9 +18,8 @@
</span><span class="cx">
</span><span class="cx"> if __name__ == '__main__':
</span><span class="cx"> from twext.python.sendfd import recvfd
</span><del>- import sys, os
</del><ins>+ import sys
+ import os
</ins><span class="cx"> fd, description = recvfd(int(sys.argv[1]))
</span><span class="cx"> os.write(fd, "Test fixture data: %s.\n" % (description,))
</span><span class="cx"> os.close(fd)
</span><del>-
-
</del></span></pre></div>
<a id="twexttrunktwextpythontesttest_filepathpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/test/test_filepath.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/test/test_filepath.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/test/test_filepath.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -71,7 +71,8 @@
</span><span class="cx"> observe exceptions raised by the replacement. This verifies that the
</span><span class="cx"> test patching done here is actually testing something.
</span><span class="cx"> """
</span><del>- class CustomException(Exception): "Just for testing."
</del><ins>+ class CustomException(Exception):
+ "Just for testing."
</ins><span class="cx"> def blowUp(dirname):
</span><span class="cx"> raise CustomException()
</span><span class="cx"> self.cfp._listdir = blowUp
</span><span class="lines">@@ -93,9 +94,10 @@
</span><span class="cx"> self.cfp._listdir = raiseEINVAL
</span><span class="cx"> self.assertEquals(self.cfp.listdir(), ['a', 'b', 'c'])
</span><span class="cx"> self.assertEquals(self.cfp.children(), [
</span><del>- CachingFilePath(pathjoin(self.cfp.path, 'a')),
- CachingFilePath(pathjoin(self.cfp.path, 'b')),
- CachingFilePath(pathjoin(self.cfp.path, 'c')),])
</del><ins>+ CachingFilePath(pathjoin(self.cfp.path, 'a')),
+ CachingFilePath(pathjoin(self.cfp.path, 'b')),
+ CachingFilePath(pathjoin(self.cfp.path, 'c')),
+ ])
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> def requireTimePassed(self, filenames):
</span><span class="lines">@@ -128,9 +130,12 @@
</span><span class="cx"> current += value
</span><span class="cx"> yield current
</span><span class="cx">
</span><del>- self.assertEquals(self.calls,
- list(cumulative(
- [0.0, 0.1, 0.2, 0.4, 0.8, 1.6, 3.2, 5.0, 5.0])))
</del><ins>+ self.assertEquals(
+ self.calls,
+ list(cumulative(
+ [0.0, 0.1, 0.2, 0.4, 0.8, 1.6, 3.2, 5.0, 5.0]
+ ))
+ )
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> def test_backoff(self):
</span><span class="lines">@@ -148,7 +153,7 @@
</span><span class="cx"> terms of L{FilePath.listdir}, so we need to verify that it will also
</span><span class="cx"> retry.
</span><span class="cx"> """
</span><del>- filenames = [self.cfp.basename()+'.a',
</del><ins>+ filenames = [self.cfp.basename() + '.a',
</ins><span class="cx"> self.cfp.basename() + '.b',
</span><span class="cx"> self.cfp.basename() + '.c']
</span><span class="cx"> siblings = map(self.cfp.sibling, filenames)
</span></span></pre></div>
<a id="twexttrunktwextpythontesttest_launchdpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/test/test_launchd.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/test/test_launchd.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/test/test_launchd.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -18,7 +18,11 @@
</span><span class="cx"> Tests for L{twext.python.launchd}.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-import sys, os, plistlib, socket, json
</del><ins>+import json
+import os
+import plistlib
+import socket
+import sys
</ins><span class="cx">
</span><span class="cx"> if __name__ == '__main__':
</span><span class="cx"> # This module is loaded as a launchd job by test-cases below; the following
</span><span class="lines">@@ -151,9 +155,10 @@
</span><span class="cx"> L{plainPython} will convert a L{_LaunchDictionary} into a Python
</span><span class="cx"> dictionary.
</span><span class="cx"> """
</span><del>- self.assertEquals({b"alpha": b"alpha-value", b"beta": b"beta-value",
- b"gamma": 3},
- plainPython(_LaunchDictionary(self.testDict)))
</del><ins>+ self.assertEquals(
+ {b"alpha": b"alpha-value", b"beta": b"beta-value", b"gamma": 3},
+ plainPython(_LaunchDictionary(self.testDict))
+ )
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> def test_plainPythonNested(self):
</span><span class="lines">@@ -165,11 +170,14 @@
</span><span class="cx"> lib.launch_data_dict_insert(otherDict,
</span><span class="cx"> lib.launch_data_new_string("bar"), "foo")
</span><span class="cx"> lib.launch_data_dict_insert(self.testDict, otherDict, "delta")
</span><del>- self.assertEquals({b"alpha": b"alpha-value", b"beta": b"beta-value",
- b"gamma": 3, b"delta": {b"foo": b"bar"}},
- plainPython(_LaunchDictionary(self.testDict)))
</del><ins>+ self.assertEquals(
+ {b"alpha": b"alpha-value", b"beta": b"beta-value",
+ b"gamma": 3, b"delta": {b"foo": b"bar"}},
+ plainPython(_LaunchDictionary(self.testDict))
+ )
</ins><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class ArrayTests(TestCase):
</span><span class="cx"> """
</span><span class="cx"> Tests for L{_LaunchArray}
</span><span class="lines">@@ -393,5 +401,3 @@
</span><span class="cx"> err = self.stderr.getContent()
</span><span class="cx"> if 'Traceback' in err:
</span><span class="cx"> self.fail(err)
</span><del>-
-
</del></span></pre></div>
<a id="twexttrunktwextpythontesttest_logpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/test/test_log.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/test/test_log.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/test/test_log.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -32,9 +32,9 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-defaultLogLevel = LogLevelFilterPredicate().defaultLogLevel
-clearLogLevels = Logger.publisher.levels.clearLogLevels
-logLevelForNamespace = Logger.publisher.levels.logLevelForNamespace
</del><ins>+defaultLogLevel = LogLevelFilterPredicate().defaultLogLevel
+clearLogLevels = Logger.publisher.levels.clearLogLevels
+logLevelForNamespace = Logger.publisher.levels.logLevelForNamespace
</ins><span class="cx"> setLogLevelForNamespace = Logger.publisher.levels.setLogLevelForNamespace
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -42,12 +42,12 @@
</span><span class="cx"> class TestLogger(Logger):
</span><span class="cx"> def emit(self, level, format=None, **kwargs):
</span><span class="cx"> if False:
</span><del>- print "*"*60
</del><ins>+ print "*" * 60
</ins><span class="cx"> print "level =", level
</span><span class="cx"> print "format =", format
</span><span class="cx"> for key, value in kwargs.items():
</span><span class="cx"> print key, "=", value
</span><del>- print "*"*60
</del><ins>+ print "*" * 60
</ins><span class="cx">
</span><span class="cx"> def observer(event):
</span><span class="cx"> self.event = event
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> twistedLogging.removeObserver(observer)
</span><span class="cx">
</span><span class="cx"> self.emitted = {
</span><del>- "level": level,
</del><ins>+ "level": level,
</ins><span class="cx"> "format": format,
</span><span class="cx"> "kwargs": kwargs,
</span><span class="cx"> }
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx"> """
</span><span class="cx"> Formatting an event that's just plain out to get us.
</span><span class="cx"> """
</span><del>- event = dict(log_format="{evil()}", evil=lambda: 1/0)
</del><ins>+ event = dict(log_format="{evil()}", evil=lambda: 1 / 0)
</ins><span class="cx"> result = formatEvent(event)
</span><span class="cx">
</span><span class="cx"> self.assertIn("Unable to format event", result)
</span><span class="lines">@@ -294,7 +294,7 @@
</span><span class="cx"> """
</span><span class="cx"> event = {
</span><span class="cx"> "log_format": "{evil()}",
</span><del>- "evil": lambda: 1/0,
</del><ins>+ "evil": lambda: 1 / 0,
</ins><span class="cx"> Unformattable(): "gurk",
</span><span class="cx"> }
</span><span class="cx"> result = formatEvent(event)
</span><span class="lines">@@ -309,7 +309,7 @@
</span><span class="cx"> """
</span><span class="cx"> event = dict(
</span><span class="cx"> log_format="{evil()}",
</span><del>- evil=lambda: 1/0,
</del><ins>+ evil=lambda: 1 / 0,
</ins><span class="cx"> gurk=Unformattable(),
</span><span class="cx"> )
</span><span class="cx"> result = formatEvent(event)
</span><span class="lines">@@ -324,7 +324,7 @@
</span><span class="cx"> """
</span><span class="cx"> event = dict(
</span><span class="cx"> log_format="{evil()}",
</span><del>- evil=lambda: 1/0,
</del><ins>+ evil=lambda: 1 / 0,
</ins><span class="cx"> recoverable="okay",
</span><span class="cx"> )
</span><span class="cx"> # Call formatUnformattableEvent() directly with a bogus exception.
</span><span class="lines">@@ -723,7 +723,7 @@
</span><span class="cx"> def test_filteredObserverNoFilteringKeys(self):
</span><span class="cx"> event_debug = dict(log_level=LogLevel.debug)
</span><span class="cx"> event_error = dict(log_level=LogLevel.error)
</span><del>- event_none = dict()
</del><ins>+ event_none = dict()
</ins><span class="cx"> events = []
</span><span class="cx">
</span><span class="cx"> observer = lambda e: events.append(e)
</span><span class="lines">@@ -1026,4 +1026,4 @@
</span><span class="cx"> """
</span><span class="cx">
</span><span class="cx"> def __repr__(self):
</span><del>- return str(1/0)
</del><ins>+ return str(1 / 0)
</ins></span></pre></div>
<a id="twexttrunktwextpythontesttest_parallelpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/python/test/test_parallel.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/python/test/test_parallel.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/python/test/test_parallel.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -59,5 +59,3 @@
</span><span class="cx"> d1.callback(4)
</span><span class="cx"> self.assertEqual(done, [None, None, None, None])
</span><span class="cx"> self.assertEqual(allDone, [None])
</span><del>-
-
</del></span></pre></div>
<a id="twexttrunktwextwhodirectorypy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/directory.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/directory.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/directory.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx"> supported by this directory service.
</span><span class="cx"> """
</span><span class="cx"> if records is not None:
</span><del>- for record in records:
</del><ins>+ for _ignore_record in records:
</ins><span class="cx"> break
</span><span class="cx"> else:
</span><span class="cx"> return succeed(())
</span><span class="lines">@@ -311,13 +311,13 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> def updateRecords(self, records, create=False):
</span><del>- for record in records:
</del><ins>+ for _ignore_record in records:
</ins><span class="cx"> return fail(NotAllowedError("Record updates not allowed."))
</span><span class="cx"> return succeed(None)
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> def removeRecords(self, uids):
</span><del>- for uid in uids:
</del><ins>+ for _ignore_uid in uids:
</ins><span class="cx"> return fail(NotAllowedError("Record removal not allowed."))
</span><span class="cx"> return succeed(None)
</span><span class="cx">
</span></span></pre></div>
<a id="twexttrunktwextwhoidirectorypy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/idirectory.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/idirectory.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/idirectory.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -277,7 +277,6 @@
</span><span class="cx"> @rtype: iterable of L{NamedConstant}s
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordsFromExpression(expression, recordTypes=None):
</span><span class="cx"> """
</span><span class="cx"> Find records matching an expression.
</span><span class="lines">@@ -296,7 +295,6 @@
</span><span class="cx"> supported by this directory service.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordsWithFieldValue(fieldName, value):
</span><span class="cx"> """
</span><span class="cx"> Find records that have the given field name with the given
</span><span class="lines">@@ -312,7 +310,6 @@
</span><span class="cx"> @rtype: deferred iterable of L{IDirectoryRecord}s
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordWithUID(uid):
</span><span class="cx"> """
</span><span class="cx"> Find the record that has the given UID.
</span><span class="lines">@@ -324,7 +321,6 @@
</span><span class="cx"> @rtype: deferred L{IDirectoryRecord}s or C{None}
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordWithGUID(guid):
</span><span class="cx"> """
</span><span class="cx"> Find the record that has the given GUID.
</span><span class="lines">@@ -336,7 +332,6 @@
</span><span class="cx"> @rtype: deferred L{IDirectoryRecord}s or C{None}
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordsWithRecordType(recordType):
</span><span class="cx"> """
</span><span class="cx"> Find the records that have the given record type.
</span><span class="lines">@@ -348,7 +343,6 @@
</span><span class="cx"> @rtype: deferred iterable of L{IDirectoryRecord}s
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordWithShortName(recordType, shortName):
</span><span class="cx"> """
</span><span class="cx"> Find the record that has the given record type and short name.
</span><span class="lines">@@ -363,7 +357,6 @@
</span><span class="cx"> @rtype: deferred L{IDirectoryRecord}s or C{None}
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def recordsWithEmailAddress(emailAddress):
</span><span class="cx"> """
</span><span class="cx"> Find the records that have the given email address.
</span><span class="lines">@@ -375,7 +368,6 @@
</span><span class="cx"> @rtype: deferred iterable of L{IDirectoryRecord}s
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def updateRecords(records, create=False):
</span><span class="cx"> """
</span><span class="cx"> Updates existing directory records.
</span><span class="lines">@@ -393,7 +385,6 @@
</span><span class="cx"> directory service.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def removeRecords(uids):
</span><span class="cx"> """
</span><span class="cx"> Removes the records with the given UIDs.
</span><span class="lines">@@ -452,7 +443,6 @@
</span><span class="cx"> direct members of this group.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def groups():
</span><span class="cx"> """
</span><span class="cx"> Find the group records that this record is a member of. Only
</span><span class="lines">@@ -463,7 +453,6 @@
</span><span class="cx"> groups that this record is a member of.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def addMembers(members):
</span><span class="cx"> """
</span><span class="cx"> Adds the members to this record.
</span><span class="lines">@@ -472,7 +461,6 @@
</span><span class="cx"> @type members: An iterable of L{IDirectoryRecord}s.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def removeMembers(members):
</span><span class="cx"> """
</span><span class="cx"> Removes the members from this record.
</span><span class="lines">@@ -481,7 +469,6 @@
</span><span class="cx"> @type members: An iterable of L{IDirectoryRecord}s.
</span><span class="cx"> """
</span><span class="cx">
</span><del>-
</del><span class="cx"> def setMembers(members):
</span><span class="cx"> """
</span><span class="cx"> Replaces the current members of this record.
</span><span class="lines">@@ -491,6 +478,7 @@
</span><span class="cx"> """
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class IPlaintextPasswordVerifier(Interface):
</span><span class="cx"> """
</span><span class="cx"> Provides a way to verify a plaintext password as provided by a client.
</span></span></pre></div>
<a id="twexttrunktwextwhoindexpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/index.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/index.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/index.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -255,7 +255,7 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx"> matchValue = normalize(expression.fieldValue)
</span><del>- matchType = expression.matchType
</del><ins>+ matchType = expression.matchType
</ins><span class="cx">
</span><span class="cx"> if matchType == MatchType.startsWith:
</span><span class="cx"> indexKeys = (
</span></span></pre></div>
<a id="twexttrunktwextwholdap_servicepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/ldap/_service.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/ldap/_service.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/ldap/_service.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -412,7 +412,6 @@
</span><span class="cx"> returnValue(False)
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> @inlineCallbacks
</span><span class="cx"> def _recordsFromQueryString(self, queryString, recordTypes=None):
</span><span class="cx"> records = []
</span><span class="lines">@@ -669,6 +668,7 @@
</span><span class="cx"> return new
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def recordTypeForDN(baseDnStr, recordTypeSchemas, dnStr):
</span><span class="cx"> """
</span><span class="cx"> Examine a DN to determine which recordType it belongs to
</span><span class="lines">@@ -695,6 +695,7 @@
</span><span class="cx"> return None
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def dnContainedIn(child, parent):
</span><span class="cx"> """
</span><span class="cx"> Return True if child dn is contained within parent dn, otherwise False.
</span><span class="lines">@@ -702,6 +703,7 @@
</span><span class="cx"> return child[-len(parent):] == parent
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def recordTypeForRecordData(recordTypeSchemas, recordData):
</span><span class="cx"> """
</span><span class="cx"> Given info about record types, determine the record type for a blob of
</span></span></pre></div>
<a id="twexttrunktwextwholdap_utilpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/ldap/_util.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/ldap/_util.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/ldap/_util.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -49,6 +49,7 @@
</span><span class="cx"> return u""
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def ldapQueryStringFromMatchExpression(
</span><span class="cx"> expression, fieldNameToAttributesMap, recordTypeSchemas
</span><span class="cx"> ):
</span><span class="lines">@@ -153,6 +154,7 @@
</span><span class="cx"> raise AssertionError("We shouldn't be here.")
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def ldapQueryStringFromCompoundExpression(
</span><span class="cx"> expression, fieldNameToAttributesMap, recordTypeSchemas
</span><span class="cx"> ):
</span><span class="lines">@@ -194,6 +196,7 @@
</span><span class="cx"> return ldapQueryStringFromQueryStrings(operand, queryStrings)
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def ldapQueryStringFromExpression(
</span><span class="cx"> expression, fieldNameToAttributesMap, recordTypeSchemas
</span><span class="cx"> ):
</span></span></pre></div>
<a id="twexttrunktwextwholdaptesttest_servicepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/ldap/test/test_service.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/ldap/test/test_service.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/ldap/test/test_service.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> from twisted.trial import unittest
</span><span class="cx"> from twisted.trial.unittest import SkipTest
</span><span class="cx">
</span><del>-from ...idirectory import QueryNotSupportedError, FieldName as BaseFieldName
</del><ins>+from ...idirectory import FieldName as BaseFieldName
</ins><span class="cx"> from .._service import (
</span><span class="cx"> DEFAULT_FIELDNAME_ATTRIBUTE_MAP, DEFAULT_RECORDTYPE_SCHEMAS,
</span><span class="cx"> LDAPBindAuthError,
</span><span class="lines">@@ -62,7 +62,6 @@
</span><span class="cx"> DirectoryServiceRealmTestMixIn,
</span><span class="cx"> DirectoryServiceQueryTestMixIn as BaseDirectoryServiceQueryTestMixIn,
</span><span class="cx"> DirectoryServiceMutableTestMixIn as BaseDirectoryServiceMutableTestMixIn,
</span><del>- UnknownConstant,
</del><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -168,6 +167,7 @@
</span><span class="cx"> test_recordsWithRecordType_unknown.todo = "After this test runs, other tests fail, need to investigate"
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class DirectoryServiceQueryTestMixIn(BaseDirectoryServiceQueryTestMixIn):
</span><span class="cx"> def test_queryNot(self):
</span><span class="cx"> return BaseDirectoryServiceQueryTestMixIn.test_queryNot(self)
</span><span class="lines">@@ -390,6 +390,7 @@
</span><span class="cx">
</span><span class="cx"> return unicode(obj)
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def tuplify(record, fieldName):
</span><span class="cx"> fieldValue = record.fields[fieldName]
</span><span class="cx">
</span><span class="lines">@@ -441,6 +442,7 @@
</span><span class="cx"> last = None
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def mockldap_parse(self):
</span><span class="cx"> match = self.TEST_RE.match(self.content)
</span><span class="cx">
</span><span class="lines">@@ -457,6 +459,7 @@
</span><span class="cx"> u"Operation %r is not supported" % (self.op,)
</span><span class="cx"> )
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def unescape(value):
</span><span class="cx"> return self.UNESCAPE_RE.sub(lambda m: chr(int(m.group(1), 16)), value)
</span><span class="cx">
</span><span class="lines">@@ -481,6 +484,7 @@
</span><span class="cx"> self.value = unescape(valueExpression)
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def mockldap_matches(self, dn, attrs):
</span><span class="cx"> values = attrs.get(self.attr)
</span><span class="cx">
</span></span></pre></div>
<a id="twexttrunktwextwholdaptesttest_utilpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/ldap/test/test_util.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/ldap/test/test_util.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/ldap/test/test_util.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -375,6 +375,7 @@
</span><span class="cx"> MatchFlags.none, expected
</span><span class="cx"> )
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def test_queryStringFromMatchExpression_multipleRecordType_not(self):
</span><span class="cx"> """
</span><span class="cx"> Match expression when the queried field name is the record type field,
</span></span></pre></div>
<a id="twexttrunktwextwhoopendirectory_constantspy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/opendirectory/_constants.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/opendirectory/_constants.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/opendirectory/_constants.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx"> nestedGroupsUIDs.multiValue = True
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> #
</span><span class="cx"> # OD constants
</span><span class="cx"> #
</span><span class="lines">@@ -71,7 +72,7 @@
</span><span class="cx"> group = ValueConstant(u"dsRecTypeStandard:Groups")
</span><span class="cx"> group.recordType = BaseRecordType.group
</span><span class="cx">
</span><del>- #location = ValueConstant(u"dsRecTypeStandard:Locations")
</del><ins>+ # location = ValueConstant(u"dsRecTypeStandard:Locations")
</ins><span class="cx"> place = ValueConstant(u"dsRecTypeStandard:Places")
</span><span class="cx">
</span><span class="cx"> resource = ValueConstant(u"dsRecTypeStandard:Resources")
</span></span></pre></div>
<a id="twexttrunktwextwhoopendirectory_scriptspy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/opendirectory/_scripts.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/opendirectory/_scripts.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/opendirectory/_scripts.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -91,6 +91,7 @@
</span><span class="cx"> return HA1.encode("hex")
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> # DigestCalcResponse
</span><span class="cx"> def calcResponse(
</span><span class="cx"> HA1,
</span><span class="lines">@@ -129,6 +130,7 @@
</span><span class="cx"> return respHash
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> @inlineCallbacks
</span><span class="cx"> def authUsernamePassword(username, password):
</span><span class="cx"> # Authenticate using simple password
</span><span class="lines">@@ -148,14 +150,14 @@
</span><span class="cx"> # Authenticate using Digest
</span><span class="cx">
</span><span class="cx"> algorithm = "md5" # "md5-sess"
</span><del>- cnonce = "/rrD6TqPA3lHRmg+fw/vyU6oWoQgzK7h9yWrsCmv/lE="
- entity = "00000000000000000000000000000000"
- method = "GET"
- nc = "00000001"
- nonce = "128446648710842461101646794502"
- qop = None
- realm = "host.example.com"
- uri = "http://host.example.com"
</del><ins>+ cnonce = "/rrD6TqPA3lHRmg+fw/vyU6oWoQgzK7h9yWrsCmv/lE="
+ entity = "00000000000000000000000000000000"
+ method = "GET"
+ nc = "00000001"
+ nonce = "128446648710842461101646794502"
+ qop = None
+ realm = "host.example.com"
+ uri = "http://host.example.com"
</ins><span class="cx">
</span><span class="cx"> responseHash = calcResponse(
</span><span class="cx"> calcHA1(
</span><span class="lines">@@ -187,6 +189,7 @@
</span><span class="cx"> print("Via DigestedCredentials, could not authenticate")
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> @inlineCallbacks
</span><span class="cx"> def lookup(shortNames):
</span><span class="cx"> service = DirectoryService()
</span><span class="lines">@@ -236,6 +239,7 @@
</span><span class="cx"> print(record.description())
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def run_auth():
</span><span class="cx"> username = raw_input("Username: ")
</span><span class="cx"> if username:
</span><span class="lines">@@ -244,5 +248,6 @@
</span><span class="cx"> authUsernamePassword(username, password)
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def run_lookup():
</span><span class="cx"> lookup(sys.argv[1:])
</span></span></pre></div>
<a id="twexttrunktwextwhoopendirectory_servicepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/opendirectory/_service.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/opendirectory/_service.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/opendirectory/_service.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -93,6 +93,7 @@
</span><span class="cx"> """
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class UnsupportedRecordTypeError(OpenDirectoryError):
</span><span class="cx"> """
</span><span class="cx"> Record type not supported by service.
</span><span class="lines">@@ -144,7 +145,6 @@
</span><span class="cx"> return u"OpenDirectory Node {self.nodeName!r}".format(self=self)
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> @property
</span><span class="cx"> def node(self):
</span><span class="cx"> """
</span><span class="lines">@@ -410,7 +410,7 @@
</span><span class="cx"> else:
</span><span class="cx"> node = self.node
</span><span class="cx">
</span><del>- queryString, expressionRecordTypes = (
</del><ins>+ queryString, _ignore_expressionRecordTypes = (
</ins><span class="cx"> self._queryStringAndRecordTypesFromExpression(expression)
</span><span class="cx"> )
</span><span class="cx">
</span><span class="lines">@@ -746,7 +746,6 @@
</span><span class="cx"> returnValue(results)
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> @inlineCallbacks
</span><span class="cx"> def localRecordsFromCompoundExpression(self, expression, recordTypes=None):
</span><span class="cx"> """
</span><span class="lines">@@ -869,6 +868,7 @@
</span><span class="cx"> returnValue(None)
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> @implementer(IPlaintextPasswordVerifier, IHTTPDigestVerifier)
</span><span class="cx"> class DirectoryRecord(BaseDirectoryRecord):
</span><span class="cx"> """
</span><span class="lines">@@ -1016,7 +1016,7 @@
</span><span class="cx"> response=response
</span><span class="cx"> )
</span><span class="cx">
</span><del>- result, m1, m2, error = self._odRecord.verifyExtendedWithAuthenticationType_authenticationItems_continueItems_context_error_(
</del><ins>+ result, _ignore_m1, _ignore_m2, error = self._odRecord.verifyExtendedWithAuthenticationType_authenticationItems_continueItems_context_error_(
</ins><span class="cx"> ODAuthMethod.digestMD5.value,
</span><span class="cx"> [username, challenge, responseArg, method],
</span><span class="cx"> None, None, None
</span></span></pre></div>
<a id="twexttrunktwextwhoopendirectorytesttest_servicepy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/opendirectory/test/test_service.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/opendirectory/test/test_service.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/opendirectory/test/test_service.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -351,8 +351,8 @@
</span><span class="cx"> self.assertEquals(
</span><span class="cx"> queryString,
</span><span class="cx"> u"("
</span><del>- u"|(dsAttrTypeStandard:RecordName=xxxxx)"
- u"(dsAttrTypeStandard:RecordName=yyyyy)"
</del><ins>+ u"|(dsAttrTypeStandard:RecordName=xxxxx)"
+ u"(dsAttrTypeStandard:RecordName=yyyyy)"
</ins><span class="cx"> u")"
</span><span class="cx"> )
</span><span class="cx"> # NOR expression
</span><span class="lines">@@ -391,8 +391,8 @@
</span><span class="cx"> self.assertEquals(
</span><span class="cx"> queryString,
</span><span class="cx"> u"("
</span><del>- u"|(dsAttrTypeStandard:RecordName=xxxxx)"
- u"(dsAttrTypeStandard:RecordName=yyyyy)"
</del><ins>+ u"|(dsAttrTypeStandard:RecordName=xxxxx)"
+ u"(dsAttrTypeStandard:RecordName=yyyyy)"
</ins><span class="cx"> u")"
</span><span class="cx"> )
</span><span class="cx">
</span></span></pre></div>
<a id="twexttrunktwextwhotesttest_directorypy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/test/test_directory.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/test/test_directory.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/test/test_directory.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -660,7 +660,7 @@
</span><span class="cx"> """
</span><span class="cx"> L{DirectoryRecord} initialization sets service and fields.
</span><span class="cx"> """
</span><del>- service = self.service()
</del><ins>+ service = self.service()
</ins><span class="cx"> wsanchez = self.makeRecord(self.fields_wsanchez, service=service)
</span><span class="cx">
</span><span class="cx"> self.assertEquals(wsanchez.service, service)
</span><span class="lines">@@ -758,7 +758,7 @@
</span><span class="cx"> """
</span><span class="cx"> Verify a value of None is allowed
</span><span class="cx"> """
</span><del>- service = self.service()
</del><ins>+ service = self.service()
</ins><span class="cx"> record = self.makeRecord(self.fields_none_password, service=service)
</span><span class="cx">
</span><span class="cx"> self.assertEquals(record.password, None)
</span><span class="lines">@@ -888,10 +888,10 @@
</span><span class="cx">
</span><span class="cx"> plugh = self.serviceClass(u"plugh")
</span><span class="cx">
</span><del>- wsanchez = self.makeRecord(self.fields_wsanchez)
</del><ins>+ wsanchez = self.makeRecord(self.fields_wsanchez)
</ins><span class="cx"> wsanchezmod = self.makeRecord(self.fields_wsanchez, service=plugh)
</span><del>- glyph = self.makeRecord(self.fields_glyph)
- glyphmod = self.makeRecord(fields_glyphmod)
</del><ins>+ glyph = self.makeRecord(self.fields_glyph)
+ glyphmod = self.makeRecord(fields_glyphmod)
</ins><span class="cx">
</span><span class="cx"> self.assertEquals(wsanchez, wsanchez)
</span><span class="cx"> self.assertNotEqual(wsanchez, glyph)
</span></span></pre></div>
<a id="twexttrunktwextwhotesttest_indexpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/test/test_index.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/test/test_index.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/test/test_index.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx"> return NoLoadDirectoryService
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class BaseDirectoryServiceTest(test_directory.BaseDirectoryServiceTest):
</span><span class="cx"> """
</span><span class="cx"> Tests for indexed directory services.
</span><span class="lines">@@ -86,6 +87,7 @@
</span><span class="cx">
</span><span class="cx"> return service
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def test_indexRecords_positive(self):
</span><span class="cx"> """
</span><span class="cx"> L{DirectoryService.indexRecords} ensures all record data is in the
</span><span class="lines">@@ -508,9 +510,9 @@
</span><span class="cx"> if not index:
</span><span class="cx"> return True
</span><span class="cx">
</span><del>- for fieldName, fieldIndex in index.iteritems():
- for fieldValue, records in fieldIndex.iteritems():
- for record in records:
</del><ins>+ for _ignore_fieldName, fieldIndex in index.iteritems():
+ for _ignore_fieldValue, records in fieldIndex.iteritems():
+ for _ignore_record in records:
</ins><span class="cx"> return False
</span><span class="cx">
</span><span class="cx"> return True
</span></span></pre></div>
<a id="twexttrunktwextwhotesttest_utilpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/test/test_util.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/test/test_util.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/test/test_util.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> return False
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class MoreTools(Names):
</span><span class="cx"> saw = NamedConstant()
</span><span class="cx"> saw.description = u"z maker"
</span><span class="lines">@@ -53,6 +54,7 @@
</span><span class="cx"> mallet.description = u"soft pounder"
</span><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> class Instruments(Names):
</span><span class="cx"> hammer = NamedConstant()
</span><span class="cx"> chisel = NamedConstant()
</span><span class="lines">@@ -225,7 +227,6 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> def test_lookupByName(self):
</span><span class="cx"> """
</span><span class="cx"> Constants are assessible via L{ConstantsContainer.lookupByName}.
</span><span class="lines">@@ -304,6 +305,7 @@
</span><span class="cx"> self.assertEquals(u"red|green", describe(Switches.r | Switches.g))
</span><span class="cx"> self.assertEquals(u"blue|black", describe(Switches.b | Switches.black))
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> def test_describeObject(self):
</span><span class="cx"> """
</span><span class="cx"> L{describe} will cast non-cosntant objects to L{unicode}.
</span></span></pre></div>
<a id="twexttrunktwextwhotesttest_xmlpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/test/test_xml.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/test/test_xml.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/test/test_xml.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -892,6 +892,7 @@
</span><span class="cx"> )
</span><span class="cx"> )
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> @inlineCallbacks
</span><span class="cx"> def test_memberships(self):
</span><span class="cx"> service = self.service()
</span></span></pre></div>
<a id="twexttrunktwextwhoxmlpy"></a>
<div class="modfile"><h4>Modified: twext/trunk/twext/who/xml.py (13806 => 13807)</h4>
<pre class="diff"><span>
<span class="info">--- twext/trunk/twext/who/xml.py        2014-07-31 18:35:53 UTC (rev 13806)
+++ twext/trunk/twext/who/xml.py        2014-07-31 19:18:20 UTC (rev 13807)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> # Schema hierarchy
</span><span class="cx">
</span><span class="cx"> directory = ValueConstant(u"directory")
</span><del>- record = ValueConstant(u"record")
</del><ins>+ record = ValueConstant(u"record")
</ins><span class="cx">
</span><span class="cx"> # Field names
</span><span class="cx">
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> XML attribute names.
</span><span class="cx"> """
</span><span class="cx">
</span><del>- realm = ValueConstant(u"realm")
</del><ins>+ realm = ValueConstant(u"realm")
</ins><span class="cx"> recordType = ValueConstant(u"type")
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -144,8 +144,8 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx"> # XML schema constants
</span><del>- element = Element
- attribute = Attribute
</del><ins>+ element = Element
+ attribute = Attribute
</ins><span class="cx"> recordTypeValue = RecordTypeValue
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -440,7 +440,6 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span><del>-
</del><span class="cx"> def flush(self):
</span><span class="cx"> BaseDirectoryService.flush(self)
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>